+7 495 008 8452 пн.-пт. 10:00 – 17:00
Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.


Управление мета тэгами на типовом магазине от Битрикс с помощью модуля "SEO инструменты: Управление метатегами PRO

Вводное слово

Довольно часто перед разработчиком встает задача реализации SEO тэгов уже на готовом проекте или если не реализации, то как минимум модернизации. Если это сайт-визитка, состоящий из максимум 20 страниц - проблемы не наблюдается, но что делать если это большой интернет-магазин с несколькими тысячами товаров или портал, в основе которого лежат те же товары, но на разных страницах подаются под разным "соусом" (отзывы, статьи, объявления - прикрепленные к товарам или разделам товаров). Тогда управление, модернизация и оптимизация SEO тэгов становится затруднительной, запутанной трудоёмкой или даже невозможной задачей (по причине частой смены политики продвижения сайта).

В этой статье я продемонстрирую некоторые возможности модуля SEO инструменты: Управление метатегами PRO, которые позволяют гибко настраивать и устанавливать мета тэги на любой странице сайта (будь она статическая или динамическая). Несмотря на то, что разработчики уже давно ведут работу над созданием решений генерирующих мета теги. Несмотря на то, что и в Битрикс есть приемы управления мета тегами на динамических разделах(страницах), все это - лишь локальные или ограниченные приемы. Они не решают основной проблемы - конфликта программистов и SEO-специалистов и решения задачи в глобальном ключе.

Поэтому мы пошли другим путем. Сначала совместно с SEO-специалистами мы разработали методику управления мета тегами на проекте.
А уж затем на базе многолетнего опыта реализовали инструменты, которые стали основой для нашего модуля.
В его основу лёг совершенно иной концепт:
  1. Облегчить жизнь разработчика, убрав из его круга задач работу по установке мета тэгов (или любой их модернизации);
  2. Облегчить жизнь SEO специалисту, добавив в его круг задач полное и гибкое управление тэгами на сайте не прибегая к помощи программиста;
  3. Создать целую (и цельную) систему по работе с SEO тэгами на сайте, а не разовые "подпорки" и "костыли", нуждающиеся в постоянной кастомизации  от проекта к проекту или на сайте в целом.
Первичные сведения

Типичный пример реализации задачи по установке SEO данных обычно происходит уже после создания рабочего проекта перед запуском либо после установки и настройки типового решения. Именно на этом примере в данной статье я разберу некоторые принципы простого, но достаточно гибкого управления тэгов по принципу "установил и забыл". Для этого нам понадобится:
  1. Типовое решение Современный интернет-магазин
  2. Установленный модуль SEO инструменты: Управление метатегами PRO, документация по установке можно найти здесь, о принципах работы  можно прочитать здесь
Первая приятная плюшка заключается в том, что модуль после установки уже работает и текущие установленные теги на странице можно просмотреть перейдя в режим правки сайта:

1.jpg

Необходимые данные

Настрою модуль для раздела каталога товаров (на сайте /catalog/). На странице каталога товаров расположен комплексный компонент bitrix:catalog. Таким образом исходные данные:
  1. Типовой интернет магазин
  2. Установленный модуль для работы с мета тэгами
  3. Комплексный компонент Битрикс (bitrix:catalog)
Что нужно сделать:
- Для групп товаров установить тэги по следующему шаблону:
  • title: Купить керамическую плитку #GROUP_NAME# от #BRAND# в <вырезано>
  • description: #GROUP_NAME# от #BRAND# - оптимальное решение для отделочных работ
  • keywords: купить #GROUP_NAME#, купить #BRAND#, купить #GROUP_NAME# в <вырезано>, купить #BRAND# в <вырезано>
- Для детальной карточки товааров установить тэги по следующему шаблону:
  • title: Купить #NAME# в <вырезано>| #ELEMENT_GROUP_NAME# | #ELEMENT_BRAND#
  • description: #KGKP# #NAME# от производителя #ELEMENT_BRAND#. Толщина керамической плитки - #TOLSHCHINA#. #KGKP# цвета #TSVET# c поверхностью #POVERKHNOST# и рисунком типа #RISUNOK# за счет оптимального размера #RAZMER# идеально подходит для укладки на #NAZNACHENIE#.
  • keywords: купить #NAME#, купить #KGKP# #NAME#
- Должна быть возможность установки ключей из заполненных свойств товара (свойства элемента инфоблока).

Таким образом исходя из условий задачу можно разделить на несколько частей:
  1. Создание ключей и установка их значений (ключ - сущность вида #<название ключа>#) на необходимых страницах. Например создать ключ NAME и его значение установить в Декор Edem 20x25 (ED2B451);
  2. Установить тэги в соответствии с заданными шаблонами с установленным набором значений ключей.
Было бы очень хорошо, чтобы пользователь сам создавал и редактировал шаблоны, с течением времени они меняются..Для этого в модуле реализован механизм правил (основанный на инфоблоках), о котором речь пойдет ниже.

Установка ключей для раздела

Итак, что означают заданные в задании ключи:
  • GROUP_NAME - это текущий раздел товаров, в котором мы находимся.
  • BRAND - это раздел товаров первого уровня
Устанавливать ключи можно тремя известными мне способами:
  1. в файле component_epilog.php простых компонентов (если компонент находится в пространстве имен bitrix, так как он не попадает в кэш);
  2. где угодно в шаблоне простых компонентов или на страницах комплексного компонента (если кэш отключен на сайте или у компонента)
  3. непосредственно в кастомизированном компоненте, помещенным в свое пространство имен  (тогда вы лишаетесь поддержки обновления компонента).
Последние два способа это "экзотика", которая влечет свои головные боли, ее в этой статье я не буду касаться, поэтому остановимся на первом:
Для установки ключей я буду использовать шаблон компонента bitrix:catalog.section.list комплексного компонента bitrix:catalog , так как я работаю только с секциями и часть необходимых данных уже доступна в шаблоне компонента. Данные о текущем разделе доступны в шаблоне компонента в ячейке массива $arResult["SECTION"]. А раздел первого уровня можно вытащить используя метод CIBlockSection::GetNavChain. Вынесем данные из кэша, как описано здесь. Все манипуляции проведу в файле result_modifier.php.

Файл result_modifier.php:
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<?
$arResult['META_KEYS'] = array();

if ($arResult['SECTION']['NAME']){
   $arResult['META_KEYS']['GROUP_NAME'] = $arResult['SECTION']['NAME'];
}

if ($arResult['SECTION']['ID'] && $arResult['SECTION']['DEPTH_LEVEL'] > 1){
   $nav = CIBlockSection::GetNavChain($arParams['IBLOCK_ID'], $arResult['SECTION']['ID']);
   if($arNav = $nav->fetch()){
      $arResult['META_KEYS']['BRAND'] = $arNav['NAME'];
   }
}
$cp = $this->__component;

if (is_object($cp))
{
   $cp->SetResultCacheKeys(array('META_KEYS'));
}
?>

В итоге для разделов первого уровня будет установлен только ключ GROUP_NAME,  а для всех остальных разделов GROUP_NAME и BRAND.

Устанавливаю ключи с помощью API как, указано в документации модуля

Файл component_epilog.php:
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<?
if(CModule::IncludeModule("alexkova.megametatags")){
   $arKeys = array();
   foreach($arResult['META_KEYS'] as $key=>$nameKey){
      $arKeys[] = array("KEY"=>$key,"VALUE"=>$nameKey,"WHERE_SET"=>$this);   
   }
   if ($arKeys){
      CMegaMetaKeys::setKeys($arKeys);      
   }
}
?>

Чтобы посмотреть какие ключи установлены на данной странице нужно включить режим правки:

2.jpg

Создание правил для разделов

Перед тем как создать правила, думаю пару слов просто необходимо сказать об условиях их выборки для установки тегов, а условия простые:
  1. ВСЕ ключи заданные в свойствах элемента инфоблока "Правила (для тэгов)" установлены на странице. То есть все ключи в свойстве элемента Все ключи (служебное) заданы.
  2. Таргетинг (поля инфоблока Где показывать и Где не показывать).
  3. В случае если в выборку под выполненные выше условия попадают больше двух элементов, выбирается тот, который имеет меньшую сортировку (поле SORT)
Теперь необходимо создать правила, для установки мета тэгов на странице. Для этого необходимо создать элемент в инфоблоке "Правила тегов" (устанавливается с модулем).

Создаю правило для разделов 1 уровня:

3.jpg

В шаблонах для мета тэгов указываю только один ключ GROUP_NAME (как видно из картинки), устанавливаю шаблоны для тегов и таргетинг.

Создаю второе правило для разделов 2 уровня и выше:

4.jpg

В шаблонах для мета тэгов указываю ключи GROUP_NAME и BRAND (как видно из картинки), устанавливаю шаблоны для тегов и таргетинг.

Чтобы просмотреть какое правило приминилось достаточно зайти в режим правке на необходимой странице и получить исчерпывающую информацию:

5.jpg

Установка ключей для детальной карточки

Итак, что означают заданные в задании ключи:
  • NAME- Наименование товара;
  • ELEMENT_BRAND - это раздел товаров первого уровня;
  • ELEMENT_GROUP_NAME - это текущий раздел-родитель товара;
  • KGKP, TOLSHCHINA, TSVET, POVERKHNOST, RISUNOK, RAZMER, NAZNACHENIE - значения свойств элемента инфоблока.
Здесь важно установить сразу все ключи (из всех заполненных свойств элемента инфоблока), чтобы можно было создавать правила для любых наборов ключей.

В данном случае редактируем шаблон компонента bitrix:catalog.detail комплексного компонента bitrix:catalog.

Файл result_modifier.php:
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();

$arResult['META_KEYS'] = array();

$arResult['META_KEYS']['NAME'] = $arResult['NAME'];

foreach($arResult['PROPERTIES'] as $property){
   if ($property['VALUE'] && $property['CODE'] && ($property['PROPERTY_TYPE'] == 'S' || $property['PROPERTY_TYPE'] == 'N' || $property['PROPERTY_TYPE'] == 'L')){
      if (is_array($property['VALUE']))
         $arResult['META_KEYS'][$property['CODE']] = implode(", ",$property['VALUE']);
      else
         $arResult['META_KEYS'][$property['CODE']] = $property['VALUE'];
   }
}

if ($arResult['IBLOCK_SECTION_ID']){
   $res = CIBlockSection::GetByID($arResult['IBLOCK_SECTION_ID']);
   if($ar_res = $res->fetch())
     $arResult['META_KEYS']['ELEMENT_GROUP_NAME'] = $ar_res['NAME'];
   
   $nav = CIBlockSection::GetNavChain($arParams['IBLOCK_ID'], $arResult['IBLOCK_SECTION_ID']);
   if($arNav = $nav->fetch()){
      $arResult['META_KEYS']['ELEMENT_BRAND'] = $arNav['NAME'];
   }
}

$cp = $this->__component;

if (is_object($cp))
{
   $cp->SetResultCacheKeys(array('META_KEYS'));
}  
?>


Файл component_epilog.php:
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();

if(CModule::IncludeModule("alexkova.megametatags")){
   $arKeys = array();
   foreach($arResult['META_KEYS'] as $key=>$nameKey){
      $arKeys[] = array("KEY"=>$key,"VALUE"=>$nameKey,"WHERE_SET"=>$this);   
   }
   if ($arKeys){
      CMegaMetaKeys::setKeys($arKeys);      
   }
}
?>

Просмотреть установленные ключи можно на странице в режиме правки:

6.jpg

Создание правила для детальной карточки

Теперь необходимо создать правила, для установки мета тэгов на странице. Для этого необходимо создать элемент в инфоблоке "Правила тегов" (устанавливается с модулем).

Создаю правило для детальной карточки:

7.jpg

В данном случае SEO специалист, опираясь на условия выборки необходимого правила может создавать различное количество правил для детальной карточки с различным набором ключей (в нашем случае в качестве ключей используются мнемонические коды свойств инфоблока).

Вот в принципе и всё, прорезюмируем: для того чтобы устанавливать теги нужно:
  1. Установить модуль SEO инструменты: Управление метатегами PRO;
  2. Установить ключи на странице (в любом месте) для шаблонов необходимых тэгов;
  3. Создать правила, из которых будут браться шаблоны для тэгов.
Данный пост можно использовать как инструкцию по настройке и интеграции модуля SEO инструменты: Управление метатегами PRO с бесплатным типовым решением от Битрикса Современный интернет магазин.

Назад в раздел

Подписаться на новые материалы раздела:














CAPTCHA