Карта сайта xml: кастомизация обновления — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
 
(не показаны 3 промежуточные версии 2 участников)
Строка 1: Строка 1:
 +
'''Статья предоставлена партнером UMI.CMS [https://www.umi-cms.ru/find_webdevs/shiriev_artur_venerovich/ Артуром Шириевым]'''
 +
 
'''Актуально для версии 18.'''
 
'''Актуально для версии 18.'''
'''Статья предоставлена партнером UMI.CMS [https://www.umi-cms.ru/find_webdevs/shiriev_artur_venerovich/ Артуром Шириевым]'''
 
  
 
Может понадобиться управлять механизмом обновления некоторых страниц карты сайта.
 
Может понадобиться управлять механизмом обновления некоторых страниц карты сайта.
Строка 25: Строка 26:
 
         $page = $page_id ? umiHierarchy::getInstance()->getElement($page_id) : false;
 
         $page = $page_id ? umiHierarchy::getInstance()->getElement($page_id) : false;
 
         if (!$page instanceof umiHierarchyElement) return true;
 
         if (!$page instanceof umiHierarchyElement) return true;
        //
 
 
         // исключаем из карты сайта все комментарии
 
         // исключаем из карты сайта все комментарии
 
         if ($page->getModule() == 'comments') $robots_deny = true;
 
         if ($page->getModule() == 'comments') $robots_deny = true;
         //
+
 
 +
         // кастомный метод для определения, для каких страниц нужно отдавать 404-страницу
 +
        if ($this->isStatus404($page_id)) $robots_deny = true;
 +
 
 
         // на сайте используются модифицированные адреса объектов каталога
 
         // на сайте используются модифицированные адреса объектов каталога
 
         if ($page->getMethod() == 'object') {
 
         if ($page->getMethod() == 'object') {
Строка 37: Строка 40:
 
  }
 
  }
 
</source>
 
</source>
 +
 +
Пример метода isStatus404 описан в [http://wiki.umisoft.ru/404_статус_для_существующих_страниц этой статьей].
  
 
[[category:Написание кастомных макросов]]
 
[[category:Написание кастомных макросов]]

Текущая версия на 10:34, 13 июня 2018

Статья предоставлена партнером UMI.CMS Артуром Шириевым

Актуально для версии 18.

Может понадобиться управлять механизмом обновления некоторых страниц карты сайта. Не так давно появилась новая стандартная точка вызова before_update_sitemap, которой нет в документации.

Механизм назначения обработчика подробно описан в разделе Событийная модель UMI.CMS

Точки вызова before_update_sitemap:
 Вызывается при подготовке глобальных переменных
  режим: before
  параметры: 
   (int) id - id страницы
  параметры-ссылки: 
   (bool) &robots_deny - запрет для отображения в карте сайта
   (string) &link - ссылка страницы

Пример обработчика:

 public function update_sitemap(iUmiEventPoint $oEventPoint) {
     if ($oEventPoint->getMode() === "before") {
         $link = &$oEventPoint->getRef('link');
         $robots_deny = &$oEventPoint->getRef('robots_deny');
         @$page_id = &$oEventPoint->getParam('id');
         $page = $page_id ? umiHierarchy::getInstance()->getElement($page_id) : false;
         if (!$page instanceof umiHierarchyElement) return true;
         // исключаем из карты сайта все комментарии
         if ($page->getModule() == 'comments') $robots_deny = true;

         // кастомный метод для определения, для каких страниц нужно отдавать 404-страницу
         if ($this->isStatus404($page_id)) $robots_deny = true;

         // на сайте используются модифицированные адреса объектов каталога
         if ($page->getMethod() == 'object') {
             $link = '{your_domain}' . $page->getAltName() . '/';
         }
     }
     return true;
 }

Пример метода isStatus404 описан в этой статьей.