Запрет индексации поисковыми системами страниц, для которых отключена индексация внутри системы

Структура сайта, информационное элементы, товары и группы имеют опцию "Индексировать". Данная опция влияет на индексацию встроенной поисковой системой, однако ее можно использовать и для запрета индексации таких страниц поисковыми системами.

В код основного макета в секцию <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)
					// Есть примененный 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
				)
			)
			{
				$bNoindex = TRUE;
			}
		}
	}
}

if ($bNoindex)
{
   ?><meta name="robots" content="noindex, follow" /><?php
   echo PHP_EOL;
}
?>

Дополнительно см. Запрет на индексацию фильтра, построенного через ЧПУ.

Не нашли ответ на свой вопрос в документации? Направьте обращение в службу поддержки или онлайн чат.

Комментарии

  • Без темы

    битый код
    см строка 39/40 и 54/55

    18.03.2024 23:45:48
    Puma

    Без темы

    Спасибо, поправили.

    19.03.2024 09:54:06
    hostcms
  • Без темы

    если магазин привязан к морде, на главной получается noindex!
    пришлось додрабоать
    elseif (!is_array(Core_Page::instance()->object->group) && Core_Page::instance()->object->group!=0)
    вроде норм теперь

    17.10.2023 22:01:11
    Puma

    Без темы

    Спасибо, добавили проверку в код на "if ($group_id)"

    18.10.2023 11:47:39
    hostcms

    Без темы

    для ИС я бы тоже это добавила бы..
    и они бывают на морде

    14.11.2023 22:11:21
    Puma

    Без темы

    Но для ИС и так давно была проверка на
    elseif (Core_Page::instance()->object->group)
    доработали с учетом того, что у ИС теперь тоже может быть массив.

    22.11.2023 12:34:27
    hostcms
  • Версия от 6,9,4

    При работе в версиях от 6.9.4 и кодом быстрых фильтров этот код срабатывает на всех страницах магазина как <meta name="robots" content="noindex, follow" />

    17.10.2020 20:14:07
    maria.ats
    maria.ats

    Без темы

    Причиной этого может являться то, что у вас у контроллера ->group представлен в виде массива. Код примера обновлён.

    19.10.2020 09:36:25
    hostcms