Автоматическое формирование анонса новости — различия между версиями
Davidov (обсуждение | вклад) |
Mad grant (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
+ | '''Актуально для версии 2.9''' | ||
+ | |||
Если анонс новости из себя представляет первые несколько предложений из полной новости, то для его формирования можно использовать кастомный метод, работающий по событиям systemCreateElement и systemModifyElement. | Если анонс новости из себя представляет первые несколько предложений из полной новости, то для его формирования можно использовать кастомный метод, работающий по событиям systemCreateElement и systemModifyElement. | ||
Добавим вызов нашего будешего метода в файл ~/classes/modules/news/custom_events.php | Добавим вызов нашего будешего метода в файл ~/classes/modules/news/custom_events.php |
Версия 10:04, 5 июня 2013
Актуально для версии 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.