События – автоматическое наследование meta keywords и meta descriptions

Материал из Umicms
Версия от 12:44, 5 июня 2013; Mad grant (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к:навигация, поиск

Если вам необходимо чтобы в различных разделах сайта автоматически наследовались значения 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, при создании страниц на любом уровне вложенности.