Расширение функциональности модулей
Некоторые методы UMI CMS оставляют желать лучшего. Например, метод lastlist модуля news не возвращает значение поля anons новости, который может понадобиться в списке новостей. Можно ли с этим что-то сделать?
Кастомные методы стандартных модулей
Открываем директорию /classes/components/news и видим там файлы macros.php и customMacros.php. В файле macros.php находим функцию lastlist(), копируем её и целиком вставляем в customMacros.php после строки public $module;.
Находим там кусок кода:
$line_arr = []; $line_arr['attribute:id'] = $element_id; $line_arr['node:name'] = $element->getName(); $line_arr['attribute:link'] = $umiLinksHelper->getLinkByParts($element); $line_arr['xlink:href'] = 'upage://' . $element_id; $line_arr['void:header'] = $lines_arr['name'] = $element->getName();
Там и правда не добавляется анонс. Поэтому вставляем одну строчку:
$line_arr['attribute:anons'] = $element->anons;
Все эти 'node:' и 'attribute:'предназначены для других шаблонизаторов, но лучше их сохранить для общности.
Теперь при вызове метода lastlist() получим также и элемент массива 'anons'.
Сразу замечу, что переопределять стандартные методы - очень дурная практика. Если с сайтом будет работать другой программист, ему придется потратить кучу сил и времени на поиск ошибки, ведь он будет уверен, что вызывается стандартный метод. Поэтому ВСЕГДА, скопировав код стандартного метода, ПЕРЕИМЕНОВЫВАЙТЕ ЕГО! Пусть этот метод будет целиком и полностью кастомным, и это будет видно уже при вызове.