Расширение функциональности модулей: различия между версиями
Olga (обсуждение | вклад) |
Olga (обсуждение | вклад) |
||
Строка 22: | Строка 22: | ||
</pre> | </pre> | ||
− | Все эти | + | Все эти ''node:'' и ''attribute:'' предназначены для других шаблонизаторов, но лучше их сохранить для общности. |
Теперь при вызове метода lastlist() получим также и элемент массива 'anons'. | Теперь при вызове метода lastlist() получим также и элемент массива 'anons'. | ||
Сразу замечу, что переопределять стандартные методы - очень дурная практика. Если с сайтом будет работать другой программист, ему придется потратить кучу сил и времени на поиск ошибки, ведь он будет уверен, что вызывается стандартный метод. Поэтому '''ВСЕГДА''', скопировав код стандартного метода, '''ПЕРЕИМЕНОВЫВАЙТЕ ЕГО'''! Пусть этот метод будет целиком и полностью кастомным, и это будет видно уже при вызове. | Сразу замечу, что переопределять стандартные методы - очень дурная практика. Если с сайтом будет работать другой программист, ему придется потратить кучу сил и времени на поиск ошибки, ведь он будет уверен, что вызывается стандартный метод. Поэтому '''ВСЕГДА''', скопировав код стандартного метода, '''ПЕРЕИМЕНОВЫВАЙТЕ ЕГО'''! Пусть этот метод будет целиком и полностью кастомным, и это будет видно уже при вызове. |
Версия 18:01, 3 ноября 2020
Некоторые методы 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'.
Сразу замечу, что переопределять стандартные методы - очень дурная практика. Если с сайтом будет работать другой программист, ему придется потратить кучу сил и времени на поиск ошибки, ведь он будет уверен, что вызывается стандартный метод. Поэтому ВСЕГДА, скопировав код стандартного метода, ПЕРЕИМЕНОВЫВАЙТЕ ЕГО! Пусть этот метод будет целиком и полностью кастомным, и это будет видно уже при вызове.