Часто инфосистема нужна только для вывода какого-нибудь блока: партнеров, преимуществ, сотрудников, документов и т.п. Отдельные страницы у таких элементов не нужны, но технически HostCMS позволяет открыть элемент по его URL.
В итоге со временем в поиске могут появиться страницы, которые там вообще не планировались.
Поэтому при создании инфосистемы сразу уточняем у менеджера или SEO-специалиста, нужны ли отдельные страницы элементов и групп в поиске.
Если не нужны — закрываем их сразу.
В ТДС после parseUrl():
$Informationsystem_Controller_Show ->limit($oInformationsystem->items_on_page) ->parseUrl();
проверяем, был ли запрошен элемент, и отправляем посетителя на основную страницу инфосистемы:
if ($Informationsystem_Controller_Show->item){ header('Location: ' . $oInformationsystem->Structure->getPath(), TRUE, 301); die();}
Например:
/partners/company-name/ → 301 → /partners/
Группы при этом продолжат работать.
Бывает, что инфосистема вообще используется только как источник данных для одной страницы. Тогда нет смысла оставлять доступными ни элементы, ни группы:
$Informationsystem_Controller_Show ->limit($oInformationsystem->items_on_page) ->parseUrl();if ($Informationsystem_Controller_Show->item || $Informationsystem_Controller_Show->group){ header('Location: ' . $oInformationsystem->Structure->getPath(), TRUE, 301); die();}
Получим:
/partners/group/ → 301 → /partners/
/partners/group/item/ → 301 → /partners/
Если страницы элементов нам не нужны в поиске, нет смысла продолжать добавлять их в sitemap.
Для таких инфосистем у элементов нужно отключать индексирование. Например, это можно сделать при сохранении элемента:
Core_Event::attach('informationsystem_item.onBeforeSave', function(Informationsystem_Item_Model $oInformationsystem_Item) { if ($oInformationsystem_Item->informationsystem_id == 2) { $oInformationsystem_Item->indexing = FALSE; }});
Вместо 2 указываем идентификатор нужной инфосистемы.
Ну и заодно проверяем XSL и другие места вывода: не стоит самим ставить ссылки на страницы, которые тут же отправляют пользователя обратно через 301.
Если малоценные страницы уже нашлись в индексе, берем любой такой URL и определяем раздел, к которому он относится.
Например:
/partners/company-name/
Значит, в Структуре сайта ищем /partners/ и открываем свойства этого узла.
Если у него выбрана Типовая динамическая страница, в поле «Страница» будет указана нужная ТДС. Рядом с ней есть кнопка редактирования — через нее и переходим к коду страницы.
Во вкладке «Код страницы» находим вызов:
$Informationsystem_Controller_Show ->limit($oInformationsystem->items_on_page) ->parseUrl();
И уже здесь определяем, что нужно закрыть: только элементы или элементы вместе с группами.
После изменения достаточно проверить три URL:
/partners/ → 200
/partners/group/ → 200 или 301
/partners/group/item/ → 301
Главное правило простое: создали инфосистему — сразу решили, нужны ли ее элементы и группы как отдельные страницы в поиске. Если нет, закрываем их на этапе разработки, а не когда они уже появились в выдаче.