Автоматическое формирование анонса новости — различия между версиями
Davidov (обсуждение | вклад) (Новая страница: «Если анонс новости из себя представляет первые несколько предложений из полной новости, т…») |
(нет различий)
|
Версия 16:36, 7 июля 2012
Если анонс новости из себя представляет первые несколько предложений из полной новости, то для его формирования можно использовать кастомный метод, работающий по событиям 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. Теперь, при добавлении/редактировании новости, анонс будет формироваться автоматически.