Расширенные сниппеты для Drupal 7- пошаговая инструкция

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

Хочется еще сказать, что руководство предназначено для пользователей, которые хоть немного знакомы с работой и структурой сайтов на Друпал, если писать руководство полностью, с нуля, то получится мини книга. 

Установка необходимых модулей

И так, для начала нам необхдимо установить необходимые для работы модули

  1. Token
  2. Custom token
  3. Metatag
  4. Fivestar и Voting Api
  5. Schema.org metatag
  6. Structured data

Для Drupal 7 самым популярным модулем микроразметки принято считать модуль schema.org, но он уже давненько не обновлялся и теперь бесполезный, так как не работает как нужно, именно поэтому мы и будем использовать модуль Schema.org metatag. 

И так, устанавливаем модули, и теперь включаем. В модуле Schema.org metatag включаем те подмодули, которые нам нужны. Каждый подмодуль отвечает за отдельный вид контента. Например:

  • Schema.org/Article - микроразметка для статей
  • Schema.org/Product - для товаров
  • Schema.org/Service - для сервисов и услуг
  • Schema.org/Review - для различных обзоров и отзывов и.т.д.

В нашем случае необходимы снипеты для интернет магазина, соответсвено включаем Schema.org/Product

sche.png

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

Редактирование файла template.php

Этот шаг необходим для того, чтобы заставить правильно работать модуль Fivestar. Проблема в том, что далее, при настройке metatag нам необходимо будет подставлять нужные токены, но токены отвечающие по умолчанию за вывод звездочек рейтинга у меня тупо не работали (например [node:field-rating:rating_count] отвечающий за кол-во голосов, и [node:field-rating:average_rating] среднее число рейтинга), поэтому пишем свою функцию в файле включенной темы шаблона ( /sites/all/themes/yourtheme/template.php )

. В файл темы: template.php добавляем функцию:

function YOURTHEME_rating_token() {
    $output = '';
    $output['rating_count'] = '';
    $output['rating_number'] = '';
    if (arg(0) == 'node') {
        $rating_count = db_query("
        	SELECT value
        	FROM {votingapi_cache}
        	WHERE entity_id = :id
            AND function = :fu"
        , array(':id' => arg(1), ':fu' => 'count'))->fetchField();
        if (isset($rating_count)) {
            $output['rating_count'] = $rating_count;
        }
        $rating_number = db_query("
        	SELECT value
        	FROM {votingapi_cache}
        	WHERE entity_id = :id
            AND function = :fu"
        , array(':id' => arg(1), ':fu' => 'average'))->fetchField();
        if (isset($rating_count)) {
            $output['rating_number'] = (round($rating_number, 0)) / 10;
        }
    }
    return $output;
}

По умолчанию этот код для рейтингов с 10 звездочками.

Если Вы будете использовать 5 звездочек - замените в коде строчку: 

  $output['rating_number'] = (round($rating_number, 0)) / 10;

на

  $output['rating_number'] = (round($rating_number, 0)) / 20;

Создаем кастом токены

Теперь нам нужно создать свои токены для будущего вывода этих самых звездочек. В меню администратора переходим в: Структура -> Custom Token -> Add Token (admin/structure/token-custom/add) 

Создаем токен: Первый токен - отвечает за вывод количества проголосовавших. И так:

  1. Называем токен например: rating count
  2. Делаем описание, например: Кол-во проголосовавших
  3. В token type выбираем формат "Собственная"
  4. В содержимое в формате PHP code вставляем: 
    <?php
    global $theme;
    $output = '';
    if ($theme == 'YOURTHEME') {
        $output = YOURTHEME_rating_token()['rating_count'];
    }
    return $output;
    ?>

     

  5. Сохраняем и переходим к созданию второго токена 

Второй токен будет твечать за вывод средней оценки в виде цыфры. И так:

  1. Переходим для создания кастом токена (/admin/structure/token-custom/add)
  2. Называем токен например: rating number
  3. Делаем описание, например: Число рейтинга
  4. В token type выбираем формат "Собственная"
  5. В содержимое в формате PHP code вставляем: 
    <?php
    global $theme;
    $output = '';
    if ($theme == 'YOURTHEME') {
        $output = YOURTHEME_rating_token()['rating_number'];
    }
    return $output;
    ?>

     

  6. Сохраняем и переходим к настройке метатегов

Исправляем баг модуля Shema Metatag

Внимание! Как оказалось пока я готовил статью вышла новая версия модуля 7.x-1.1 в которой это  баг уже исправлен! Так что качайте последнюю версию и этот шаг пропускайте. Но для общей инфы все таки оставлю описание ранее существовавшей проблемы. 

Как я говорил выше, часто модули для Друпал просто не успевают обновлятся за темпами изменений в поисковых системах. Так и тут. Проблема в том, что вшитое в модуль Shema.org Metatag значение Rating для типа материалов Product не проходит валидацию микроразметки в Google. Нам его нужно заменить на 

Редактируем файл sites/all/modules/schema_metatag/schema_product/schema_product.metatag.inc

кусок кода:

  $info['tags']['schema_product.rating'] = array(
    'class' => 'SchemaRatingBase',
    'label' => t('rating'),
    'description' => '',
    'multiple' => TRUE,
    'weight' => ++$weight,
  ) + $defaults;

Заменяем на:

  $info['tags']['schema_product.aggregateRating'] = array(
    'class' => 'SchemaRatingBase',
    'label' => t('aggregateRating'),
    'description' => '',
    'multiple' => TRUE,
    'weight' => ++$weight,
  ) + $defaults;

Настройка модуля Metatag

  1. Переходим в настройки метатегов admin/config/search/metatags и добавляем (если еще не добавлены) тип метатегов (admin/config/search/metatags/config/add) В нашем случае тип шаблона метатегов уже был ранее создан как: Содержимое: прибор
    meta_teg.png
  2. Нажимаем редактировать нужный тип. При необходимости задаем шаблон метатегов для заданного типа материала и переходим на вкладку задачи микроразметки Shema.org Product ( в Вашем случае это может быть Schema.org Article или Schema.org Service например, все зависит от того, какой подмодуль вы включили на этапах выше, и какой тип материала вам необходимо разметить. 
  3. Заполняем необходимые поля. Пример заполнения прикрепляю, надеюсь далее сами разберетесь что и как сделав поправки под свои потребности и настройки.

Обратите внимание, что в данные ratingValue и ratingCount мы вставляем ранее созданные нами Custom токены. Также, если у вас 5 звездочек в рейтинге на сайте, смените bestRating с 10, на 5

rating.png

Настройка модуля Structured Data

Модуль необходим для расширенного представления вашего сайта, а не отдельной страницы. Позволяет выводить логотип, социальные ссылки и.т.д. Здесь особо настраивать нечего, думаю все понятно будет. Переходим в admin/config/structured-data заполняем необходимые поля.

Проверка результата

Перед завершением обязательно убедитесь что все настроили верно. Для этого переходим в сервис проверки структурированных данных от Google https://search.google.com/structured-data/testing-tool, и проверям любую страницу нашего сайта соответсвубщего типа материала, для которого были произведены настройки. 

На выходе должны получить такое: 

instrument_proverki_strukturirovannyh_dannyh.png

instrument_proverki.png

previewid_db555a0f_b2d0_4f6e_a9df_3caece593352_google_search.png

 

WellDone!

Это конечно не панацея, и для многих программистов будет легче прописать микроразметку прямо в .tpl файлах темы, но такой способ организации микроразметки на сайте Друпал 7 тоже рабочий и имееет место быть. Также, для дополнения микроданных хлебными крошками, а также улучшения структуры сайта, советую использовать модуль Path Breadcrumbs. Его настройка это отдельная статья, но в настройках сниппетов рекомендую ставить так:

path_breadcrumbs_seonomad.png

Average: 10 (3 votes)