Не пойму почему не работает плагин на событие OnBeforeDocFormSave
Задача: При создании документа с определенным шаблоном, должен генериться текст и записываться в content.
Принцип генерации текста: Задан текст с возможными словосочетаниями. Идея СЕО-шника была в том, чтобы не писать 100500 уникальных текстов под практически одинаковую продукцию.
Код плагина (событие OnBeforeDocFormSave):
Суть проблемы: При создании ресурса текст не сохраняется в content при этом в логах просто выводится сгенеренный текст как ошибка. При этом если попытаться записать в content простой текст без обработки функцией textGenerator все пишется без ошибок.
Мне кажется я просто чего-то не знаю… чего-то важного))) Помогите пожалуйста
Принцип генерации текста: Задан текст с возможными словосочетаниями. Идея СЕО-шника была в том, чтобы не писать 100500 уникальных текстов под практически одинаковую продукцию.
Код плагина (событие OnBeforeDocFormSave):
<?php
if ($modx->event->name == 'OnBeforeDocFormSave') {
if($resource->get('template') == 5) {
if($mode == 'new') {
function textGenerator($text) {
if(preg_match("/^(.*)\{([^\{\}]+)\}(.*)$/isU", $text, $matches)) {
$p = explode('|', $matches[2]);
$r = rand(1, count($p)) - 1;
textGenerator($matches[1].$p[$r].$matches[3]);
} else {
echo $text;
}
}
$string = 'Текст длинный текст еще немного текста {словосочетание один|словосочетание два} ну и дальше пошел текст и еще переменные словосочетания';
$out = textGenerator($string);
$resource->set('content', $out);
}
}
}
Суть проблемы: При создании ресурса текст не сохраняется в content при этом в логах просто выводится сгенеренный текст как ошибка. При этом если попытаться записать в content простой текст без обработки функцией textGenerator все пишется без ошибок.
Мне кажется я просто чего-то не знаю… чего-то важного))) Помогите пожалуйста
Комментарии: 3
нужно return
function textGenerator($text) {
if(preg_match("/^(.*)\{([^\{\}]+)\}(.*)$/isU", $text, $matches)) {
$p = explode('|', $matches[2]);
$r = rand(1, count($p)) - 1;
return textGenerator($matches[1].$p[$r].$matches[3]);
} else {
return $text;
}
}
Это я echo уже от безисходности влепил… return было первоначально, результат тот же только в логах ошибки нет… content пустой(
Ой блин… все пора отдыхать)) Не поставил return на return textGenerator($matches[1].$p[$r].$matches[3]);. Спасибо огромное за помощь
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.