Автоматическое формирование анонса новости

Материал из Umicms
Перейти к:навигация, поиск

Если анонс новости из себя представляет первые несколько предложений из полной новости, то для его формирования можно использовать кастомный метод, работающий по событиям 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.