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

Материал из Umicms
Версия от 10:08, 31 октября 2019; Vitaliks (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к:навигация, поиск

Актуально для версии 20

Если анонс новости из себя представляет первые несколько предложений из полной новости, то для его формирования можно использовать кастомный метод, работающий по событиям systemCreateElement и systemModifyElement. Добавим вызов нашего будущего метода в файл ~/classes/components/news/custom_events.php

<?php
	new umiEventListener('systemCreateElement', 'news', 'anonsGenerate');
	new umiEventListener('systemModifyElement', 'news', 'anonsGenerate');

после этого напишем сам обработчик в файл ~/classes/components/news/customAdmin.php

	public function anonsGenerate(iUmiEventPoint $oEventPoint){
		if ($oEventPoint->getMode() === "after"){
			$object = $oEventPoint->getRef("element");
			$content = $object->getValue('content');
			$limit = 199;
			$result = substr($content, 0, $limit) . '...';
			$object->setValue('anons', $result);
			$object->commit();
			return true;
		}
	}

в данной функции происходит получение содержимого поля content новости, и в поле anons записывается первые 199 символов содержимого поля content, это ограничение указывается в переменной $limit. Для правильной работы, необходимо не забыть добавить запись об этой функции в файл permissions.custom.php. Теперь, при добавлении/редактировании новости, анонс будет формироваться автоматически.

Данный функционал был проверен на работоспособность в версии системы 2.8.5.2.