Запрет индексации поисковыми системами страниц, для которых отключена индексация внутри системы
Структура сайта, информационное элементы, товары и группы имеют опцию "Индексировать". Данная опция влияет на индексацию встроенной поисковой системой, однако ее можно использовать и для запрета индексации таких страниц поисковыми системами.
В код основного макета в секцию <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;
}
// Первая страница - 0, запрет индексации /page-XX/
elseif (Core_Page::instance()->object->page > 0)
{
$bNoindex = TRUE;
}
// Может быть массивом, идентификатором группы или 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;
}
// Первая страница - 0, запрет индексации /page-XX/
elseif (Core_Page::instance()->object->page > 0)
{
$bNoindex = TRUE;
}
else
{
// Может быть массивом, идентификатором группы или FALSE}
if (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;
}
}
// Индексация группы не запрещена, проверяем на фильтры в корне и в группе
if (!$bNoindex
// Нет примененного SEO-фильтра
&& (is_null(Core_Page::instance()->object->filterSeo)
// Есть примененный SEO-фильтр без цен и фильтрации по ценам идет
|| Core_Page::instance()->object->filterSeo->price_from == 0
&& Core_Page::instance()->object->filterSeo->price_to == 0
&& count(Core_Page::instance()->object->getFilterPrices())
// Есть примененный SEO-фильтр с ценами и фильтрация по ценам не идет
|| Core_Page::instance()->object->filterSeo->price_from >=0
&& Core_Page::instance()->object->filterSeo->price_to > 0
&& !count(Core_Page::instance()->object->getFilterPrices())
)
// Условия фильтра заданы по свойствам, ценам или производителю
&& (count(Core_Page::instance()->object->getFilterProperties())
|| count(Core_Page::instance()->object->getFilterPrices())
|| Core_Page::instance()->object->producer
)
// Индексация SEO-фильтра запрещена
|| !is_null(Core_Page::instance()->object->filterSeo) && !Core_Page::instance()->object->filterSeo->indexing
)
{
$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 представлен в виде массива. Код примера обновлён.