Автоматическое формирование анонса новости
Актуально для версии 2.9
Если анонс новости из себя представляет первые несколько предложений из полной новости, то для его формирования можно использовать кастомный метод, работающий по событиям systemCreateElement и systemModifyElement. Добавим вызов нашего будешего метода в файл ~/classes/modules/news/custom_events.php
<?php
new umiEventListener('systemCreateElement', 'news', 'anons_generate');
new umiEventListener('systemModifyElement', 'news', 'anons_generate');
?>
после этого напишем сам обработчик в файл ~/classes/modules/news/__custom_adm.php после строки //TODO: Write here your own macroses (admin mode)
<?php
public function anons_generate(iUmiEventPoint $oEventPoint){
if ($oEventPoint->getMode() === "after"){
$object = $oEventPoint->getRef("element");
$content=$object->getValue('content');
$limit=200;
$result=strpos($content,". ", $limit)+1;
$result=substr($content,0,$result);
$object->setValue('anons',$result);
$object->commit();
return true;
}
}
?>
в данной функции происходит получение содержимого поля content новости, и в поле anons записывается часть содержимого поля content от начала и до первого вхождения строки ". " после 200 символа. Ограничение указывается в переменной $limit. Для правильной работы, необходимо не забыть добавить запись об этой функции в файл permissions.custom.php. Теперь, при добавлении/редактировании новости, анонс будет формироваться автоматически.
Данный функционал был проверен на работоспособность в версии системы 2.8.5.2.