Запрет индексации поисковыми системами страниц, для которых отключена индексация внутри системы
Структура сайта, информационное элементы, товары и группы имеют опцию "Индексировать". Данная опция влияет на индексацию встроенной поисковой системой, однако ее можно использовать и для запрета индексации таких страниц поисковыми системами.
В код основного макета в секцию <head> внесите следующий код:
<?php // Запрет на индексацию узла структуры $bNoindex = !Core_Page::instance()->structure->indexing; if (!$bNoindex) { if (is_object(Core_Page::instance()->object)) { // Информационная система if (Core_Page::instance()->object instanceof Informationsystem_Controller_Show) { if (Core_Page::instance()->object->item) { $oInformationsystem_Item = Core_Entity::factory('Informationsystem_Item', intval(Core_Page::instance()->object->item)); $bNoindex = !$oInformationsystem_Item->indexing; } // Может быть массивом, идентификатором группы или FALSE elseif (is_array(Core_Page::instance()->object->group) || Core_Page::instance()->object->group) { $group_id = is_array(Core_Page::instance()->object->group) ? Core_Array::first(Core_Page::instance()->object->group) : intval(Core_Page::instance()->object->group); if ($group_id) { $oInformationsystem_Group = Core_Entity::factory('Informationsystem_Group', $group_id); $bNoindex = !$oInformationsystem_Group->indexing; } } } // Магазин elseif (Core_Page::instance()->object instanceof Shop_Controller_Show) { if (Core_Page::instance()->object->item) { $oShop_Item = Core_Entity::factory('Shop_Item', intval(Core_Page::instance()->object->item)); $bNoindex = !$oShop_Item->indexing; // Может быть массивом, идентификатором группы или FALSE} elseif (is_array(Core_Page::instance()->object->group) || Core_Page::instance()->object->group) { $group_id = is_array(Core_Page::instance()->object->group) ? Core_Array::first(Core_Page::instance()->object->group) : intval(Core_Page::instance()->object->group); if ($group_id) { $oShop_Group = Core_Entity::factory('Shop_Group', $group_id); $bNoindex = !$oShop_Group->indexing; } } elseif ( // Нет примененного SEO-фильтра для этой страницы, его разрешаем индексировать is_null(Core_Page::instance()->object->filterSeo) // Условия фильтра заданы по свойствам, ценам или производителю && (count(Core_Page::instance()->object->getFilterProperties()) || count(Core_Page::instance()->object->getFilterPrices()) || Core_Page::instance()->object->producer ) ) { $bNoindex = TRUE; } } } } if ($bNoindex) { ?><meta name="robots" content="noindex, follow" /><?php echo PHP_EOL; } ?>
Дополнительно см. Запрет на индексацию фильтра, построенного через ЧПУ.
Комментарии
-
Без темы
если магазин привязан к морде, на главной получается noindex!
пришлось додрабоать
elseif (!is_array(Core_Page::instance()->object->group) && Core_Page::instance()->object->group!=0)
вроде норм теперьБез темы
Спасибо, добавили проверку в код на "if ($group_id)"
-
Версия от 6,9,4
При работе в версиях от 6.9.4 и кодом быстрых фильтров этот код срабатывает на всех страницах магазина как <meta name="robots" content="noindex, follow" />
Без темы
Причиной этого может являться то, что у вас у контроллера ->group представлен в виде массива. Код примера обновлён.