Карта сайта xml: кастомизация обновления — различия между версиями
Материал из Umicms
Whoa (обсуждение | вклад)  | 
				Whoa (обсуждение | вклад)   | 
				||
| (не показано 6 промежуточных версий 2 участников) | |||
| Строка 1: | Строка 1: | ||
| − | + | '''Статья предоставлена партнером UMI.CMS [https://www.umi-cms.ru/find_webdevs/shiriev_artur_venerovich/ Артуром Шириевым]'''  | |
| + | |||
| + | '''Актуально для версии 18.'''  | ||
Может понадобиться управлять механизмом обновления некоторых страниц карты сайта.  | Может понадобиться управлять механизмом обновления некоторых страниц карты сайта.  | ||
| Строка 16: | Строка 18: | ||
Пример обработчика:  | Пример обработчика:  | ||
| − | |||
<source lang="php">  | <source lang="php">  | ||
  public function update_sitemap(iUmiEventPoint $oEventPoint) {  |   public function update_sitemap(iUmiEventPoint $oEventPoint) {  | ||
| Строка 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:Написание кастомных макросов]]  | ||
Текущая версия на 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 описан в этой статьей.