Карта сайта xml: кастомизация обновления — различия между версиями
Материал из Umicms
Whoa (обсуждение | вклад) |
Lesnik512 (обсуждение | вклад) |
||
Строка 26: | Строка 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') { | ||
Строка 38: | Строка 40: | ||
} | } | ||
</source> | </source> | ||
+ | |||
+ | Пример метода isStatus404 описан в [http://wiki.umisoft.ru/404_статус_для_существующих_страниц этой статьей]. | ||
[[category:Написание кастомных макросов]] | [[category:Написание кастомных макросов]] |
Версия 09:10, 12 июня 2018
Актуально для версии 18.
Статья предоставлена партнером UMI.CMS Артуром Шириевым
Может понадобиться управлять механизмом обновления некоторых страниц карты сайта. Не так давно появилась новая стандартная точка вызова 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 описан в этой статьей.