Расширение функциональности модулей: различия между версиями

Материал из Wiki from ADT Web Solutions
Перейти к навигации Перейти к поиску
(Новая страница: «Некоторые методы UMI CMS оставляют желать лучшего. Например, метод lastlist модуля news не возвра...»)
 
Строка 22: Строка 22:
 
</pre>
 
</pre>
  
Все эти 'node:' и 'attribute:'предназначены для других шаблонизаторов, но лучше их сохранить для общности.
+
Все эти '''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'.

Сразу замечу, что переопределять стандартные методы - очень дурная практика. Если с сайтом будет работать другой программист, ему придется потратить кучу сил и времени на поиск ошибки, ведь он будет уверен, что вызывается стандартный метод. Поэтому ВСЕГДА, скопировав код стандартного метода, ПЕРЕИМЕНОВЫВАЙТЕ ЕГО! Пусть этот метод будет целиком и полностью кастомным, и это будет видно уже при вызове.