Микроразметка Schema.Org типового решения "Аспро: Корпоративный сайт, адаптивный" для 1С-Битрикс


микроразметка schema.org решения Аспро: Корпоративный сайт, адаптивный для 1С-БитриксДовелось реализовать микроразметку schema.org в ещё одном решении от одного из лидеров маркета 1С-Битрикс - компании Аспро - Корпоративный сайт, адаптивный (http://marketplace.1c-bitrix.ru/solutions/aspro.allcorp/). На сей раз дорабатывалось решение не для интернет-магазинов, а для сайтов-визиток и каталогов (т.е. поддерживаются младшие редакции включая "Старт").

Данная статья является компиляцией полученного опыта и может быть использована в качестве руководства по самостоятельной микроразметке данного решения владельцами сайтов.

Микроразметка schema.org внедрялась на решение "Аспро: Корпоративный сайт, адаптивный" v.1.0.12.


Лирическое отступление.
В прошлой статье я критиковал качество кода в решении "Крутойшоп". Боюсь в этом дела обстоят ещё хуже. Компоненты как-то странно работают с кешом 1С-Битрикс - при малейших изменениях есть риск получить чудовищно развалившуюся вёрстку (причём такое может произойти даже при казалось бы легитимном изменении параметров компонента через диалог редактирования). Поэтому обязательно бекапьте все файлы перед изменением!


Статья будет разбита на 2 части: статические и динамические области.

  • Статическая область - положили компонент (возможно даже использовали визуальный редактор), настроили параметры (название организации, график работы, телефон и другая информация, которая не меняется в зависимости от состояния страницы и может быть изменена редактором в случае необходимости);
  • Динамическая область - компонент меняется в зависимости от страницы, например каталог товаров или новостная лента, компонент необходимо разместить в исходном коде шаблона компонента и настроить получение параметров из компонента (размещение происходит с использованием только php редактора, желательно опытным администратором или разработчиком, использование виз редактора с высокой степенью вероятности приведёт к неработоспособности функционала).

Начнём с того что проще и может быть сделано практически любым опытным пользователем и редактором контента.


Статическая микроразметка

Адрес организации и Хлебные крошки

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

Наиболее подходящее место для размещение статической микроразметки - одна из включаемых областей шаблона. Так разместив 1 раз компоненты мы отобразим их на всём сайте.

Идеально подойдёт включаемая область с копирайтом или адресом в подвале сайта. Мы воспользуемся копирайтом:

редактируем включаемую область копирайта в подвале Аспро: Корпоративный сайт, адаптивный

Включаем режим правки в публичной части, наводим курсор мыши на область, видим появление конктекстного меню как на скриншоте выше, нажимаем кнопку "редактировать как html".

Адрес файла включаемой области (для опытных пользователей) - /include/copy.php

В открывшееся окно разделено на 2 части: левую рабочую область и правую панель компонентов. В Правой области в списке компонентов выбираем пункт "Компоненты Кофе-Дизайн", внутри "schema.org" и в открывшемся списке выбираем нужные нам компоненты Адреса и Хлебных Крошек. Перетаскиваем мышью компоненты из правой области компонентов в левую рабочую:

Добавляем в режиме визуального редактора 2 компонента: Адрес и Хлебные крошки

При двойном нажатии на компоненте откроется диалог редактирования параметров, в котором нам необходимо будет настроить оба компонента:

параметры компонента микроразметки Schema.Org Хлебных Крошек в визуальном редакторе

Для заполнения параметров компонента воспользуемся документацией (обратим внимание на выделенные красными значками пункты - они обязательны для заполнения): 

  • Спецификация и документация для Адреса (заполняем все поля, какие сочтём нужным. Кашу маслом не испортишь, как не испортишь сайт микроразметкой)
  • Документация для Хлебных крошек (ничего особенного, компонент выводит данные автоматически, нужно лишь проверить правильность формирования цепочки, которая генерируется на основе файловой структуры и данных от компонентов на странице).

После настройки компонентов добавляем галочку "Не отображать на сайте":

параметр Не отображать на сайте

Она добавит компоненту параметр:

"SHOW" => "Y",

Это универсальный параметр, имеющийся у всех компонентом модуля "Микроразметка Schema.org". Значение Y говорит компоненту, что параметр не следует показывать обычным пользователям, но отдавать поисковым системам. Это позволяет вписать компонент в любой сайт без изменения его внешнего вида.

Микроразметка Адреса и Хлебных крошек готова.


Динамическая микроразметка

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

Если вы не являетесь таким специалистом и намерены сделать всё самостоятельно, используя данную инструкцию, то будьте крайне аккуратны и ни в коем случае не используйте визуальный редактор 1С-Битрикс для работы с кодом - это может привести к неработоспособности функционала. И делайте резервную копию.

Схема действий всегда будет одинаковой:

  1. Берём пустую страницу (например создаём её в административной разделе) и открываем в визуальном редакторе;
  2. Размещаем на странице компонент микроразметки (аналогично тому как выше сделано для Адреса);
  3. Заполняем те параметры, которые в дальнейшем будут нами использоваться в динамическом компоненте, статическими заглушками (например #NAME# для параметра с названием товара, #PRICE# для цены и т.д.);
  4. Переключаемся в режим исходного кода для получения кода вызова компонента с нашими заглушками (см скриншот ниже); 
    код вызова компонента микроразметки в режиме php
  5. Находим шаблон компонента, отвечающего за вывод в публичной части той сущности, которую мы хотим разметить (например, детальной страницы товара), копируем его (иначе наша правка может быть затёрта при обновлении решения) и открываем копию для редактирования в режиме php;
  6. Выбираем место для вставки вызова нашего компонента;
  7. Используя отладочный код (выводится незаметно для пользователей, так что не забываем в отладчике убирать display:none, а после завершения работ убрать отладку): 
    <div style="display:none;"> 
    <? echo "<pre>"; print_r($arResult); echo "</pre>";?>
    </div>

    Выводим массив с данными компонента. Выбираем те ключи, которые содержат интересующие нас данные (например, название товара или его цену);
  8. Заменяем заглушку (#NAME#, #PRICE# и т.д.) на переменные с данными, использующимися шаблоном.


Товары и цены

Решение "Аспро: Корпоративный сайт, адаптивный" не является интернет-магазином, однако здесь реализован довольно подробный товарный каталог с помощью компонентов новостей.

Следует учитывать, что для корректной работы микроразметки товара необходимо заполнить поле "цена", однако его содержимое должно быть числовым! Микроразметка не понимает значения вроде "1999 руб.", а учитывая вариативность возможных значений валюты в этой статье мы будем редполагать, что поле заполнено просто числом.

Зайдём в карточку товара в режиме редактирования и наведём курсор на область товара, нажмём на стрелочку рядом с параметром компонента для получения списка используемых компонентов:

редактируем шаблон компонента каталога

Так мы перейдём к редактированию файла /bitrix/templates/aspro-allcorp/components/bitrix/news.detail/catalog/template.php, где:

  • aspro-allcorp - имя шаблона сайта

  • news.detail - название компонента

  • catalog - название шаблона компонента

В файл template.php (сам шаблон) мы добавим в конце вызов компонента микроразметки товара:

<?if(!empty($arResult["PROPERTIES"]["PRICE"]["VALUE"])):?>
<?$APPLICATION->IncludeComponent(
"coffeediz:schema.org.Product",
"",
Array(
"SHOW" => "Y",
"NAME" => $arResult["NAME"],
"DESCRIPTION" => $arResult["DETAIL_TEXT"],
"AGGREGATEOFFER" => "N",
"PARAM_RATING_SHOW" => "N",
"PRICE" => $arResult["PROPERTIES"]["PRICE"]["VALUE"],
"PRICECURRENCY" => "BYR",
"ITEMAVAILABILITY" => $arResult['SchemaOrg']['ITEMAVAILABILITY'],
"ITEMCONDITION" => "NewCondition",
"PAYMENTMETHOD" => array("ByBankTransferInAdvance"),
"COMPONENT_TEMPLATE" => ".default"
),
false,
array('HIDE_ICONS' => 'Y')
);?>
<?endif;?>

Помимо этого добавим в рядом расположенный файл result_modifier.php (полный путь - /bitrix/templates/aspro-allcorp/components/bitrix/news.detail/catalog/result_modifier.php) код:

<?if($arResult['PROPERTIES']['STATUS']['VALUE_XML_ID']  == 'instock') { $arResult['SchemaOrg']['ITEMAVAILABILITY'] = 'InStock';
}
if($arResult['PROPERTIES']['STATUS']['VALUE_XML_ID']  == 'nostock') {
$arResult['SchemaOrg']['ITEMAVAILABILITY'] = 'OutOfStock';
}
if($arResult['PROPERTIES']['STATUS']['VALUE_XML_ID']  == 'order') {
$arResult['SchemaOrg']['ITEMAVAILABILITY'] = 'PreOrder';
}
if($arResult['PROPERTIES']['STATUS']['VALUE_XML_ID']  == 'pending') {
$arResult['SchemaOrg']['ITEMAVAILABILITY'] = 'OutOfStock';
}?>

Примечания
Т.к. в решении не задаются некоторые параметры товара, нам пришлось задать их в явном виде в микроразметке:
  1. валюту - белорусские рубли - "PRICECURRENCY" => "BYR"
  2. состояние товара - "новое" - "ITEMCONDITION" => "NewCondition"
  3. метод оплаты - банковский перевод (безнал) - "PAYMENTMETHOD" => array("ByBankTransferInAdvance")

Кроме того, поскольку параметр "статус" не соответствует установленным в стандарте на микроразметку (и рекомендованным Google), то мы вручную подобрали эквиваленты в result_modifier.php и сохранили в отдельную переменную $arResult['SchemaOrg']['ITEMAVAILABILITY']. 

Так же, мы поставили проверку на заполненность цены! Цена - обязательное поле в спецификации Google/Яндекс для разметки товаров! Поэтому мы просто не выводим микроразметку, если у товара не заполнена цена!

Микроразметка товара готова. Мы не использовали разметку рейтинга/отзыва, т.к. данное решение просто не поддерживает такой функционал (однако, если вы доработаете его, то легко сможете передать и информацию о рейтинге/отзыве в параметры компонента, как это было описано в предыдущей статье)


Изображения

Разметка картинок возможна сразу в 3 местах данного решения (и везде произойдёт одинаковым образом):

  • Товар - /bitrix/templates/aspro-allcorp/components/bitrix/news.detail/catalog/template.php
  • Проект - /bitrix/templates/aspro-allcorp/components/bitrix/news.detail/projects/template.php
  • Новость/Статья - /bitrix/templates/aspro-allcorp/components/bitrix/news.detail/news/template.php

Переход к редактированию шаблона полностью идентичен тому как это происходит для разметки товаров и цен.

Для добавления микроразметки (в любом из этих 3 шаблонов) найдём строку:

<?foreach($arResult["GALLERY"] as $key => $arPhoto):?>

или

<?foreach( $arResult["GALLERY"] as $key => $arPhoto ){?>

и сразу после этой строки добавим код:

<?$APPLICATION->IncludeComponent( "coffeediz:schema.org.ImageObject",
"",
Array(
"COMPONENT_TEMPLATE" => ".default",
"SHOW" => "Y",
"CONTENTURL" => $arPhoto["DETAIL"]["SRC"],
"NAME" => $arResult["NAME"],
"CAPTION" => $arResult["NAME"],
"DESCRIPTION" => $arResult["PREVIEW_TEXT"],
"HEIGHT" => $arPhoto["HEIGHT"],
"WIDTH" => $arPhoto["WIDTH"],
"TRUMBNAIL_CONTENTURL" => $arPhoto["PREVIEW"]["src"],
"ITEMPROP" => "",
"REPRESENTATIVEOFPAGE" => "True",
"PARAM_RATING_SHOW" => "N"
),
false,
array('HIDE_ICONS' => 'Y')
);?>

Этот код автоматом оформит микроразметку, используя в качестве названия картинки название Новости/Проекта/Статьи/Товара, укажет пропорции и укажет оригинал картинки (в максимальном разрешении) и миниатюру (уменьшенная копия для галереи).

Микроразметка изображений готова!


Новости/Статьи

И для новостей и для статей в шаблоне используется общий компонент, поэтому без доработок мы не можем указать размеру тип материала в микроразметке. Это не страшно - мы будем использовать "тип по-умолчанию" для творческих работ - статья.

Редактируем шаблон компонента детальной новости /bitrix/templates/aspro-allcorp/components/bitrix/news.detail/news/template.php (переход к редактированию через публичный интерфейс описан в разделе "Товары и Цены"). Добавим в конце файла вызов компонент микроразметки статьи:

<?$APPLICATION->IncludeComponent( "coffeediz:schema.org.Article",
"",
Array(
"COMPONENT_TEMPLATE" => ".default",
"SHOW" => "Y",
"TYPE" => "",
"LEARNING_RESOURCE_TYPE" => "",
"NAME" => $arResult["NAME"],
"ARTICLEBODY" => $arResult["FIELDS"]["DETAIL_TEXT"],
"ABOUT" => $arResult["FIELDS"]["DETAIL_TEXT"],
"GENRE" => "",
"ARTICLE_SECTION" => array(""),
"KEYWORDS" => array(""),
"IN_LANGUAGE" => "ru",
"DATA_PUBLISHED" => $arResult["DISPLAY_ACTIVE_FROM"],
"AUTHOR_TYPE" => "",
"IMAGEURL" => $arResult["DETAIL_PICTURE"]["SRC"],
"PARAM_RATING_SHOW" => "N",
"IMAGE_NAME" => $arResult["DETAIL_PICTURE"]["TITLE"],
"IMAGE_CAPTION" => $arResult["DETAIL_PICTURE"]["ALT"],
"IMAGE_DESCRIPTION" => $arResult["DETAIL_PICTURE"]["ALT"],
"IMAGE_HEIGHT" => $arResult["DETAIL_PICTURE"]["HEIGHT"],
"IMAGE_WIDTH" => $arResult["DETAIL_PICTURE"]["WIDTH"],
"IMAGE_TRUMBNAIL_CONTENTURL" => ""
),
false,
array('HIDE_ICONS' => 'Y')
);?>

Важно, что мы указали дату начала активности в качестве даты публикации. Это несёт с собой 2 проблемы:

  • у статей в данном типовом решении по-умолчанию дата активности отсутствует. Это нормально - данный атрибут не обязательный согласно спецификации Яндекс (хотя Google и будет ругаться)
  • у новостей дата стоит, однако в параметрах компонента настроен вид даты, отличный от ISO 8601, поэтому разметка так же будет невалидной. Вариант - выбрать в настройках компонента формат ГГГГ-ММ-ДД:
    настройка компонента новостей на вывод даты в формате ISO 8601

Разметка статьи/новости готова!


Заключение

В рамках статьи были реализованы следующие виды микроразметки для решения "Аспро: Корпоративный сайт, адаптивный" для 1С-Битрикс:

  • Хлебные крошки (Data-Vocabulary.org/Breadcrumb), только для Google
  • Адрес организации и контакты (schema.org/Organization), для Google и Яндекс
  • Изображения товаров и галерей изображений в новостях/статья/проектах (schema.org/ImageObject), для Яндекс.Картинок и Google.Изображений
  • Статьи (schema.org/Article), в первую очередь для Яндекса. Для Статей и Новостей.
  • Товары с ценами (schema.org/Product), для Google и Яндекс (но с учётом того, что если вы выгружаете YML для Яндекс.Маркета, то он получит приоритет перед микроразметкой!)

Результаты валидации страницы с 4 видами Микроразметки с помощью модуля Микроразметка Schema.org для 1С-Битрикс

Теперь в точки зрения поисковой системы беспорядочный склад картинок (по 3 для каждого изображения товара и по 2 для галерей) превратился в упорядоченную структуру для Яндекс.Картинок (и риск попадания крошечной анонсной картинки вперёд большого оригинала серьёзно уменьшен), Яндекс.Справочник и Google.Maps получили информацию об организации, а поиск по товарам обеих систем вполне ожет считать наш сайт полноценным интернет-магазином!



Задойный А.В.


Микроразметка Schema.Org типового решения &quot;Аспро: Корпоративный сайт, адаптивный&quot; для 1С-Битрикс

<p style="text-align: left;"> <img width="270" alt="микроразметка schema.org решения Аспро: Корпоративный сайт, адаптивный для 1С-Битрикс" src="/upload/medialibrary/faa/faaf29961ea500a2fc7fe753760924aa.PNG" height="135" title="микроразметка schema.org решения Аспро: Корпоративный сайт, адаптивный для 1С-Битрикс" align="left">Довелось реализовать микроразметку schema.org в ещё одном решении от одного из лидеров маркета 1С-Битрикс - компании Аспро - Корпоративный сайт, адаптивный (<a href="http://marketplace.1c-bitrix.ru/solutions/aspro.allcorp/" rel="nofollow" target="_blank" data-bx-noindex="Y">http://marketplace.1c-bitrix.ru/solutions/aspro.allcorp/</a>). На сей раз дорабатывалось решение не для интернет-магазинов, а для сайтов-визиток и каталогов (т.е. поддерживаются младшие редакции включая "Старт"). </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> Данная статья является компиляцией полученного опыта и может быть использована в качестве руководства по самостоятельной микроразметке данного решения владельцами сайтов. </p> <p style="text-align: left;"> Микроразметка schema.org внедрялась на решение "Аспро: Корпоративный сайт, адаптивный" v.1.0.12. </p> <p style="text-align: left;"> <br> </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> </p> <table border="1" cellpadding="1" cellspacing="1" class=""> <tbody> <tr> <td style="text-align: left;"> <b><i>Лирическое отступление.</i></b><br> <i>В прошлой статье я критиковал качество кода в решении "Крутойшоп". Боюсь в этом дела обстоят ещё хуже. Компоненты как-то странно работают с кешом 1С-Битрикс - при малейших изменениях есть риск получить чудовищно развалившуюся вёрстку (причём такое может произойти даже при казалось бы легитимном изменении параметров компонента через диалог редактирования). </i><b><i>Поэтому обязательно бекапьте все файлы перед изменением!</i></b> </td> </tr> </tbody> </table> <p> </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> <br> </p> <p style="text-align: left;"> Статья будет разбита на 2 части: статические и динамические области. </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> </p> <ul style="text-align: left;"> <li> <b>Статическая область</b> - положили компонент (<i>возможно даже использовали визуальный редактор</i>), настроили параметры (название организации, график работы, телефон и другая информация, которая не меняется в зависимости от состояния страницы и может быть изменена редактором в случае необходимости); </li> <li> <b>Динамическая область</b> - компонент меняется в зависимости от страницы, например каталог товаров или новостная лента, компонент необходимо разместить в исходном коде шаблона компонента и настроить получение параметров из компонента (<i>размещение происходит с использованием только php редактора, желательно опытным администратором или разработчиком, использование виз редактора с высокой степенью вероятности приведёт к неработоспособности функционала</i>). </li> </ul> <p> </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> Начнём с того что проще и может быть сделано практически любым опытным пользователем и редактором контента. </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> <br> </p> <p style="text-align: left;"> </p> <h2 style="text-align: left;">Статическая микроразметка</h2> <p style="text-align: left;"> </p> <h3 style="text-align: left;">Адрес организации и Хлебные крошки</h3> <p style="text-align: left;"> </p> <p style="text-align: left;"> <i>Эта часть инструкции практически без изменений кочует из одного документа в другой (меняются лишь скриншоты и путь ко включаемой области), т.к. принцип идентичный.</i> </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> Наиболее подходящее место для размещение статической микроразметки - одна из включаемых областей шаблона. Так разместив 1 раз компоненты мы отобразим их на всём сайте. </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> Идеально подойдёт включаемая область с копирайтом или адресом в подвале сайта. Мы воспользуемся копирайтом: </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> <img width="265" alt="редактируем включаемую область копирайта в подвале Аспро: Корпоративный сайт, адаптивный" src="/upload/medialibrary/85a/85a97e018c7c8a653f2be18c7ba6120d.PNG" height="156" title="редактируем включаемую область копирайта в подвале Аспро: Корпоративный сайт, адаптивный"><br> </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> Включаем режим правки в публичной части, наводим курсор мыши на область, видим появление конктекстного меню как на скриншоте выше, нажимаем кнопку "редактировать как html". </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> Адрес файла включаемой области (для опытных пользователей) - /include/copy.php </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> В открывшееся окно разделено на 2 части: левую рабочую область и правую панель компонентов. В Правой области в списке компонентов выбираем пункт "Компоненты Кофе-Дизайн", внутри "schema.org" и в открывшемся списке выбираем нужные нам компоненты Адреса и Хлебных Крошек. Перетаскиваем мышью компоненты из правой области компонентов в левую рабочую: </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> <img width="860" alt="Добавляем в режиме визуального редактора 2 компонента: Адрес и Хлебные крошки" src="/upload/medialibrary/4c5/4c567db92fb97631af1c4cddf1a95d7a.png" height="649" title="Добавляем в режиме визуального редактора 2 компонента: Адрес и Хлебные крошки"><br> </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> При двойном нажатии на компоненте откроется диалог редактирования параметров, в котором нам необходимо будет настроить оба компонента: </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> <img width="806" alt="параметры компонента микроразметки Schema.Org Хлебных Крошек в визуальном редакторе" src="/upload/medialibrary/873/87338ded7900950eaf4fad8251ebb6c0.png" height="584" title="параметры компонента микроразметки Schema.Org Хлебных Крошек в визуальном редакторе"> </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> Для заполнения параметров компонента воспользуемся документацией (обратим внимание на выделенные красными значками пункты - они обязательны для заполнения):  </p> <p style="text-align: left;"> </p> <ul style="text-align: left;"> <li><a href="http://xn--80ahcjeib4ac4d.xn--p1ai/information/about_microcathode_say_a_word_how_to_implement_microcathode_module_coffeediz_schema_on_the_website_u/#OrganizationAndPlace">Спецификация и документация для Адреса</a> (заполняем все поля, какие сочтём нужным. Кашу маслом не испортишь, как не испортишь сайт микроразметкой)</li> <li><a href="http://xn--80ahcjeib4ac4d.xn--p1ai/information/about_microcathode_say_a_word_how_to_implement_microcathode_module_coffeediz_schema_on_the_website_u/#breadcrumb">Документация для Хлебных крошек</a> (ничего особенного, компонент выводит данные автоматически, нужно лишь проверить правильность формирования цепочки, которая генерируется на основе файловой структуры и данных от компонентов на странице).</li> </ul> <p> </p> <p style="text-align: left;"> После настройки компонентов добавляем галочку "Не отображать на сайте": </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> <img width="207" alt="параметр Не отображать на сайте" src="/upload/medialibrary/6c6/6c67b3dc885fdbe07744f502c8f596ab.png" height="35" title="параметр Не отображать на сайте"><br> </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> Она добавит компоненту параметр: </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> <code>"SHOW" =&gt; "Y",</code> </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> Это универсальный параметр, имеющийся у всех компонентом модуля "Микроразметка Schema.org". Значение Y говорит компоненту, что параметр не следует показывать обычным пользователям, но отдавать поисковым системам. Это позволяет вписать компонент в любой сайт без изменения его внешнего вида. </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> Микроразметка Адреса и Хлебных крошек готова. </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> <br> </p> <p style="text-align: left;"> </p> <h2 style="text-align: left;">Динамическая микроразметка</h2> <p style="text-align: left;"> </p> <p style="text-align: left;"> Как было сказано выше динамический контент формируется системой (например, товары каталога или новости), поэтому физически нет возможности поставить на каждую страницу компонент микроразметки и вручную его настроить (даже если предположить, что у кого-то хватило бы терпения это делать) - все страницы формируются автоматически системой. Для решения задачи микроразметки требуется опытный администратор или программист, поскольку придётся вносить изменения в php код. </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> Если вы не являетесь таким специалистом и намерены сделать всё самостоятельно, используя данную инструкцию, то будьте крайне аккуратны и ни в коем случае не используйте визуальный редактор 1С-Битрикс для работы с кодом - это может привести к неработоспособности функционала. И делайте резервную копию. </p> <p style="text-align: left;"> </p> <h3 style="text-align: left;"> Схема действий всегда будет одинаковой: </h3> <p style="text-align: left;"> </p> <ol style="text-align: left;"> <li>Берём пустую страницу (например создаём её в административной разделе) и открываем в визуальном редакторе;</li> <li>Размещаем на странице компонент микроразметки (аналогично тому как выше сделано для Адреса);</li> <li>Заполняем те параметры, которые в дальнейшем будут нами использоваться в динамическом компоненте, статическими заглушками (например #NAME# для параметра с названием товара, #PRICE# для цены и т.д.);</li> <li>Переключаемся в режим исходного кода для получения кода вызова компонента с нашими заглушками (см скриншот ниже); <br> <img width="772" alt="код вызова компонента микроразметки в режиме php" src="/upload/medialibrary/732/7321ba70fdcc9335d935806be427f3ed.png" height="675" title="код вызова компонента микроразметки в режиме php"></li> <li>Находим шаблон компонента, отвечающего за вывод в публичной части той сущности, которую мы хотим разметить (например, детальной страницы товара), копируем его (иначе наша правка может быть затёрта при обновлении решения) и открываем копию для редактирования в режиме php;</li> <li>Выбираем место для вставки вызова нашего компонента;</li> <li>Используя отладочный код (выводится незаметно для пользователей, так что не забываем в отладчике убирать <code>display:none</code>, а после завершения работ убрать отладку): <br> <code>&lt;div style="display:none;"&gt; <br> &lt;? echo "&lt;pre&gt;"; print_r($arResult); echo "&lt;/pre&gt;";?&gt;<br> &lt;/div&gt;</code><br> Выводим массив с данными компонента. Выбираем те ключи, которые содержат интересующие нас данные (например, название товара или его цену);</li> <li>Заменяем заглушку (#NAME#, #PRICE# и т.д.) на переменные с данными, использующимися шаблоном.</li> </ol> <p> </p> <p style="text-align: left;"> <br> </p> <p style="text-align: left;"> </p> <h3 style="text-align: left;"> Товары и цены </h3> <p style="text-align: left;"> </p> <p style="text-align: left;"> Решение "Аспро: Корпоративный сайт, адаптивный" не является интернет-магазином, однако здесь реализован довольно подробный товарный каталог с помощью компонентов новостей. </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> Следует учитывать, что <b>для корректной работы микроразметки товара необходимо заполнить поле "цена"</b>, однако его содержимое должно быть числовым! Микроразметка не понимает значения вроде "1999 руб.", а учитывая вариативность возможных значений валюты в этой статье мы будем редполагать, что поле заполнено просто числом. </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> Зайдём в карточку товара в режиме редактирования и наведём курсор на область товара, нажмём на стрелочку рядом с параметром компонента для получения списка используемых компонентов: </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> <img width="910" alt="редактируем шаблон компонента каталога" src="/upload/medialibrary/906/90671322911f9e6e94044f657b005bff.PNG" height="638" title="редактируем шаблон компонента каталога"><br> </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> Так мы перейдём к редактированию файла /bitrix/templates/<span style="background-color: #f7977a;">aspro-allcorp</span>/components/bitrix/<span style="background-color: #39b778;">news.detail</span>/<span style="background-color: #00bff3;">catalog</span>/template.php, где: </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> </p> <ul style="text-align: left;"> <li> <p> <span style="background-color: #f7977a;">aspro-allcorp</span> - имя шаблона сайта<br> </p> </li> <li> <p> <span style="background-color: #39b778;">news.detail</span> - название компонента<br> </p> </li> <li> <p> <span style="background-color: #00bff3;">catalog</span> - название шаблона компонента </p> </li> </ul> <p> </p> <p style="text-align: left;"> В файл <b>template.php</b> (сам шаблон) мы добавим в конце вызов компонента микроразметки товара: </p> <p style="text-align: left;"> <code>&lt;?if(!empty($arResult["PROPERTIES"]["PRICE"]["VALUE"])):?&gt;<br> &lt;?$APPLICATION-&gt;IncludeComponent(<br> "coffeediz:schema.org.Product",<br> "",<br> Array(<br> "SHOW" =&gt; "Y",<br> "NAME" =&gt; $arResult["NAME"],<br> "DESCRIPTION" =&gt; $arResult["DETAIL_TEXT"],<br> "AGGREGATEOFFER" =&gt; "N",<br> "PARAM_RATING_SHOW" =&gt; "N",<br> "PRICE" =&gt; $arResult["PROPERTIES"]["PRICE"]["VALUE"],<br> "PRICECURRENCY" =&gt; "BYR",<br> "ITEMAVAILABILITY" =&gt; $arResult['SchemaOrg']['ITEMAVAILABILITY'],<br> "ITEMCONDITION" =&gt; "NewCondition",<br> "PAYMENTMETHOD" =&gt; array("ByBankTransferInAdvance"),<br> "COMPONENT_TEMPLATE" =&gt; ".default"<br> ),<br> false,<br> array('HIDE_ICONS' =&gt; 'Y')<br> );?&gt;<br> &lt;?endif;?&gt;</code> </p> <p style="text-align: left;"> Помимо этого добавим в рядом расположенный файл <b>result_modifier.php</b> (полный путь - /bitrix/templates/aspro-allcorp/components/bitrix/news.detail/catalog/result_modifier.php) код: </p> <p style="text-align: left;"> <code>&lt;?if($arResult['PROPERTIES']['STATUS']['VALUE_XML_ID']  == 'instock') { $arResult['SchemaOrg']['ITEMAVAILABILITY'] = 'InStock';<br> }<br> if($arResult['PROPERTIES']['STATUS']['VALUE_XML_ID']  == 'nostock') {<br> $arResult['SchemaOrg']['ITEMAVAILABILITY'] = 'OutOfStock';<br> }<br> if($arResult['PROPERTIES']['STATUS']['VALUE_XML_ID']  == 'order') {<br> $arResult['SchemaOrg']['ITEMAVAILABILITY'] = 'PreOrder';<br> }<br> if($arResult['PROPERTIES']['STATUS']['VALUE_XML_ID']  == 'pending') {<br> $arResult['SchemaOrg']['ITEMAVAILABILITY'] = 'OutOfStock';<br> }?&gt;</code> </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> </p> <table border="1" cellpadding="1" cellspacing="1" class=""> <tbody> <tr> <td style="text-align: left;"> <b>Примечания</b><br> Т.к. в решении не задаются некоторые параметры товара, нам пришлось задать их в явном виде в микроразметке: <br> <ol style="text-align: left;"> <li>валюту - белорусские рубли - "PRICECURRENCY" =&gt; "BYR"</li> <li>состояние товара - "новое" - "ITEMCONDITION" =&gt; "NewCondition"</li> <li>метод оплаты - банковский перевод (безнал) - "PAYMENTMETHOD" =&gt; array("ByBankTransferInAdvance")</li> </ol> <br> <b>Кроме того</b>, поскольку параметр "статус" не соответствует установленным в стандарте на микроразметку (и рекомендованным Google), то мы вручную подобрали эквиваленты в result_modifier.php и сохранили в отдельную переменную $arResult['SchemaOrg']['ITEMAVAILABILITY']. <br> <br> <b><span style="color: #ff0000;">Так же, мы поставили проверку на заполненность цены!</span></b><span style="color: #ff0000;"> Цена - обязательное поле в спецификации Google/Яндекс для разметки товаров! Поэтому мы просто не выводим микроразметку, если у товара не заполнена цена!</span> </td> </tr> </tbody> </table> <p> </p> <p style="text-align: left;"> Микроразметка товара готова. Мы не использовали разметку рейтинга/отзыва, т.к. данное решение просто не поддерживает такой функционал (однако, если вы доработаете его, то легко сможете передать и информацию о рейтинге/отзыве в параметры компонента, как это было описано в предыдущей статье) </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> <br> </p> <p style="text-align: left;"> </p> <h3 style="text-align: left;"> Изображения</h3> <p style="text-align: left;"> </p> <p style="text-align: left;"> Разметка картинок возможна сразу в 3 местах данного решения (и везде произойдёт одинаковым образом): </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> </p> <ul style="text-align: left;"> <li> <b>Товар</b> - /bitrix/templates/aspro-allcorp/components/bitrix/news.detail/catalog/template.php </li> <li> <b>Проект</b> - /bitrix/templates/aspro-allcorp/components/bitrix/news.detail/projects/template.php </li> <li> <b>Новость/Статья</b> - /bitrix/templates/aspro-allcorp/components/bitrix/news.detail/news/template.php </li> </ul> <p> </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> Переход к редактированию шаблона полностью идентичен тому как это происходит для разметки товаров и цен. </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> Для добавления микроразметки (в любом из этих 3 шаблонов) найдём строку: </p> <p style="text-align: left;"> <code>&lt;?foreach($arResult["GALLERY"] as $key =&gt; $arPhoto):?&gt;</code> </p> <p style="text-align: left;"> или </p> <p style="text-align: left;"> <code>&lt;?foreach( $arResult["GALLERY"] as $key =&gt; $arPhoto ){?&gt;</code> </p> <p style="text-align: left;"> и сразу после этой строки добавим код: </p> <p style="text-align: left;"> <code>&lt;?$APPLICATION-&gt;IncludeComponent( "coffeediz:schema.org.ImageObject",<br> "",<br> Array(<br> "COMPONENT_TEMPLATE" =&gt; ".default",<br> "SHOW" =&gt; "Y",<br> "CONTENTURL" =&gt; $arPhoto["DETAIL"]["SRC"],<br> "NAME" =&gt; $arResult["NAME"],<br> "CAPTION" =&gt; $arResult["NAME"],<br> "DESCRIPTION" =&gt; $arResult["PREVIEW_TEXT"],<br> "HEIGHT" =&gt; $arPhoto["HEIGHT"],<br> "WIDTH" =&gt; $arPhoto["WIDTH"],<br> "TRUMBNAIL_CONTENTURL" =&gt; $arPhoto["PREVIEW"]["src"],<br> "ITEMPROP" =&gt; "",<br> "REPRESENTATIVEOFPAGE" =&gt; "True",<br> "PARAM_RATING_SHOW" =&gt; "N"<br> ),<br> false,<br> array('HIDE_ICONS' =&gt; 'Y')<br> );?&gt;</code> </p> <p style="text-align: left;"> Этот код автоматом оформит микроразметку, используя в качестве названия картинки название Новости/Проекта/Статьи/Товара, укажет пропорции и укажет оригинал картинки (в максимальном разрешении) и миниатюру (уменьшенная копия для галереи). </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> Микроразметка изображений готова! </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> <br> </p> <p style="text-align: left;"> </p> <h3 style="text-align: left;">Новости/Статьи</h3> <p style="text-align: left;"> </p> <p style="text-align: left;"> И для новостей и для статей в шаблоне используется общий компонент, поэтому без доработок мы не можем указать размеру тип материала в микроразметке. Это не страшно - мы будем использовать "тип по-умолчанию" для творческих работ - статья. </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> Редактируем шаблон компонента детальной новости /bitrix/templates/aspro-allcorp/components/bitrix/news.detail/news/template.php (переход к редактированию через публичный интерфейс описан в разделе "Товары и Цены"). Добавим в конце файла вызов компонент микроразметки статьи: </p> <p style="text-align: left;"> <code>&lt;?$APPLICATION-&gt;IncludeComponent( "coffeediz:schema.org.Article",<br> "",<br> Array(<br> "COMPONENT_TEMPLATE" =&gt; ".default",<br> "SHOW" =&gt; "Y",<br> "TYPE" =&gt; "",<br> "LEARNING_RESOURCE_TYPE" =&gt; "",<br> "NAME" =&gt; $arResult["NAME"],<br> "ARTICLEBODY" =&gt; $arResult["FIELDS"]["DETAIL_TEXT"],<br> "ABOUT" =&gt; $arResult["FIELDS"]["DETAIL_TEXT"],<br> "GENRE" =&gt; "",<br> "ARTICLE_SECTION" =&gt; array(""),<br> "KEYWORDS" =&gt; array(""),<br> "IN_LANGUAGE" =&gt; "ru",<br> "DATA_PUBLISHED" =&gt; $arResult["DISPLAY_ACTIVE_FROM"],<br> "AUTHOR_TYPE" =&gt; "",<br> "IMAGEURL" =&gt; $arResult["DETAIL_PICTURE"]["SRC"],<br> "PARAM_RATING_SHOW" =&gt; "N",<br> "IMAGE_NAME" =&gt; $arResult["DETAIL_PICTURE"]["TITLE"],<br> "IMAGE_CAPTION" =&gt; $arResult["DETAIL_PICTURE"]["ALT"],<br> "IMAGE_DESCRIPTION" =&gt; $arResult["DETAIL_PICTURE"]["ALT"],<br> "IMAGE_HEIGHT" =&gt; $arResult["DETAIL_PICTURE"]["HEIGHT"],<br> "IMAGE_WIDTH" =&gt; $arResult["DETAIL_PICTURE"]["WIDTH"],<br> "IMAGE_TRUMBNAIL_CONTENTURL" =&gt; ""<br> ),<br> false,<br> array('HIDE_ICONS' =&gt; 'Y')<br> );?&gt;</code> </p> <p style="text-align: left;"> Важно, что мы указали дату начала активности в качестве даты публикации. Это несёт с собой 2 проблемы: </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> </p> <ul style="text-align: left;"> <li> у статей в данном типовом решении по-умолчанию дата активности отсутствует. Это нормально - данный атрибут не обязательный согласно спецификации Яндекс (хотя Google и будет ругаться) </li> <li> у новостей дата стоит, однако в параметрах компонента настроен вид даты, отличный от ISO 8601, поэтому разметка так же будет невалидной. Вариант - выбрать в настройках компонента формат ГГГГ-ММ-ДД:<br> <img width="855" alt="настройка компонента новостей на вывод даты в формате ISO 8601" src="/upload/medialibrary/941/94119ea8a8ad1787ae318202769c2edf.PNG" height="645" title="настройка компонента новостей на вывод даты в формате ISO 8601"> </li> </ul> <p> </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> Разметка статьи/новости готова! </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> <br> </p> <p style="text-align: left;"> </p> <h2 style="text-align: left;"> Заключение </h2> <p style="text-align: left;"> </p> <p style="text-align: left;"> В рамках статьи были реализованы следующие виды микроразметки для решения "Аспро: Корпоративный сайт, адаптивный" для 1С-Битрикс: </p> <p style="text-align: left;"> </p> <ul style="text-align: left;"> <li>Хлебные крошки (Data-Vocabulary.org/Breadcrumb), только для Google</li> <li>Адрес организации и контакты (schema.org/Organization), для Google и Яндекс</li> <li>Изображения товаров и галерей изображений в новостях/статья/проектах (schema.org/ImageObject), для Яндекс.Картинок и Google.Изображений</li> <li>Статьи (schema.org/Article), в первую очередь для Яндекса. Для Статей и Новостей.</li> <li>Товары с ценами (schema.org/Product), для Google и Яндекс (но с учётом того, что если вы выгружаете YML для Яндекс.Маркета, то он получит приоритет перед микроразметкой!)</li> </ul> <p> </p> <p class="" style="text-align: left;"> <img width="827" alt="Результаты валидации страницы с 4 видами Микроразметки с помощью модуля Микроразметка Schema.org для 1С-Битрикс" src="/upload/medialibrary/69e/69ed70c863bab681962779f6d86f8e91.png" height="594" title="Результаты валидации страницы с 4 видами Микроразметки с помощью модуля Микроразметка Schema.org для 1С-Битрикс"><br> </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> Теперь в точки зрения поисковой системы беспорядочный склад картинок (по 3 для каждого изображения товара и по 2 для галерей) превратился в упорядоченную структуру для Яндекс.Картинок (и риск попадания крошечной анонсной картинки вперёд большого оригинала серьёзно уменьшен), Яндекс.Справочник и Google.Maps получили информацию об организации, а поиск по товарам обеих систем вполне ожет считать наш сайт полноценным интернет-магазином! </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> </p> <p style="text-align: left;"> <br> </p> <p style="text-align: left;"> <br> </p> <p style="text-align: right;"> <a href="http://plus.google.com/+АлексейЗадойный?rel=author" target="_blank">Задойный А.В.</a> </p>

Возврат к списку

Яндекс.Метрика