События – автоматическое наследование meta keywords и meta descriptions
Материал из Umicms
Версия от 21:10, 26 сентября 2010; VITL' (обсуждение | вклад) (Новая страница: «Если вам необходимо чтобы в различных разделах сайта автоматически наследовались значен…»)
Если вам необходимо чтобы в различных разделах сайта автоматически наследовались значения meta_keywords и meta_descriptions относительно некоторых родительских страниц, то для этой задачи можно воспользоваться механизмом событий, который есть в UMI.CMS. Нам необходимо событие systemCreateElement, поэтому, допустим в папке classes/modules/data/ создадим файл custom_events.php с таким содержанием:
<?php
new umiEventListener('systemCreateElement', 'data', 'metainherit');
?>
а в файл classes/modules/data/__custom.php добавим новый метод:
public function metainherit(iUmiEventPoint $oEventPoint) {
if ($oEventPoint->getMode() == "after") {
$element = $oEventPoint->getRef('element');
// массив id страниц от которых необходимо наследовать meta_keywords и meta_descriptions
$main_elements = array('45', '103', '23');
$hierarchy = umiHierarchy::getInstance();
$arr_parent = $hierarchy->getAllParents($element->getId());
foreach($main_elements as $parent){
if(in_array($parent, $arr_parent)){
$element_main = $hierarchy->getElement($parent);
if(!$element_main instanceof umiHierarchyElement) return false;
$value_keywords = $element_main->getValue('meta_keywords');
$value_descriptions = $element_main->getValue('meta_descriptions');
$element->setValue('meta_keywords', $value_keywords);
$element->setValue('meta_descriptions', $value_descriptions);
$element->commit();
}
}
}
}
В массиве $main_elements необходимо прописать id страниц, от которых будут наследоваться значения meta_keywords и meta_descriptions, при создании страниц на любом уровне вложенности.