- Установка необхідних модулів
- Редагування файлу template.php
- Створюємо кастом токени
- Виправляємо баг модуля Shema Metatag
- Налаштування модуля Metatag
- Налаштування модуля Structured Data
- Перевірка результату
Уже все напевно знають, що розширені сніппети дозволяють уявити сторінку вашого сайту у видачі пошукових систем більш інформативно і помітно, що підвищує кількість кліків по ній, і в майбутньому позитивно може позначатися на позиціях. Упустимо вікі тексти про те які бувають сніппети і розмітки і взагалі що це і як, тема цього поста про те, як впровадити структуровані дані (мікророзмітки) для сайтів, створених моєму улюбленому движку - Друпал7.
Хочеться ще сказати, що керівництво призначене для користувачів, які хоч трохи знайомі з роботою і структурою сайтів на Друпал, якщо писати керівництво повністю, з нуля, то вийде міні книга.
Установка необхідних модулів
І так, для початку нам необхідно встановити необхідні для роботи модулі
- Token
- Custom token
- Metatag
- Fivestar і Voting Api
- Schema.org metatag
- 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
На жаль, просто установкою модулів не обійтися так як стандарти пошукових систем до мікророзмітки змінюються швидше, ніж оновлюються модулі. Тому нам доведеться дещо допив в коді.
Редагування файлу 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)
Створюємо токен: Перший токен - відповідає за виведення кількості тих, хто проголосував. І так:
- Називаємо токен наприклад: rating count
- Робимо опис, наприклад: Кількість тих, хто проголосував
- У token type вибираємо формат "Власна"
- В вміст в форматі PHP code вставляємо: <? Php global $ theme; $ Output = ''; if ($ theme == 'YOURTHEME') {$ output = YOURTHEME_rating_token () [ 'rating_count']; } Return $ output; ?>
- Зберігаємо і переходимо до створення другого токена
Другий токен буде твечать за виведення середньої оцінки у вигляді цифри. І так:
- Переходимо для створення кастом токена (/ admin / structure / token-custom / add)
- Називаємо токен наприклад: rating number
- Робимо опис, наприклад: Число рейтингу
- У token type вибираємо формат "Власна"
- В вміст в форматі PHP code вставляємо: <? Php global $ theme; $ Output = ''; if ($ theme == 'YOURTHEME') {$ output = YOURTHEME_rating_token () [ 'rating_number']; } Return $ output; ?>
- Зберігаємо і переходимо до налаштування метатегов
Виправляємо баг модуля 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
- Переходимо в налаштування метатегов admin / config / search / metatags і додаємо (якщо ще не додавали) тип метатегов (admin / config / search / metatags / config / add) У нашому випадку тип шаблону метатегов вже був раніше створений як: Вміст: прилад
- Натискаємо редагувати потрібний тип. При необхідності задаємо шаблон метатегов для заданого типу матеріалу і переходимо на вкладку завдання мікророзмітки Shema.org Product (у Вашому випадку це може бути Schema.org Article або Schema.org Service наприклад, все залежить від того, який подмодуль ви включили на етапах вище, і який тип матеріалу вам необхідно розмітити.
- Заповнюємо необхідні поля. Приклад заповнення прикріплюю, сподіваюся далі самі розберетеся що і як зробивши поправки під свої потреби і настройки.
Зверніть увагу, що в дані ratingValue і ratingCount ми вставляємо раніше створені нами Custom токени. Також, якщо у вас 5 зірочок в рейтингу на сайті, змініть bestRating з 10, на 5
Налаштування модуля Structured Data
Модуль необхідний для розширеного представлення вашого сайту, а не окремої сторінки. Дозволяє виводити логотип, соціальні посилання і.т.д. Тут особливо налаштовувати нічого, думаю все зрозуміло буде. Переходимо в admin / config / structured-data заповнюємо необхідні поля.
Перевірка результату
Перед завершенням обов'язково переконайтеся що все налаштували вірно. Для цього переходимо в сервіс перевірки структурованих даних від Google https://search.google.com/structured-data/testing-tool, і перевіряємо будь-яку сторінку нашого сайту соответсвубщего типу матеріалу, для якого були зроблені настройки.
На виході повинні отримати таке:
WellDone!
Це звичайно не панацея, і для багатьох програмістів буде легше прописати мікророзмітки прямо в .tpl файлах теми, але такий спосіб організації мікророзмітки на сайті Друпал 7 теж робочий і имееет місце бути. Також, для доповнення мікроданних хлібними крихтами, а також поліпшення структури сайту, раджу використовувати модуль Path Breadcrumbs . Його настройка це окрема стаття, але в налаштуваннях сніпетів рекомендую ставити так:
Php global $ theme; $ Output = ''; if ($ theme == 'YOURTHEME') {$ output = YOURTHEME_rating_token () [ 'rating_number']; } Return $ output; ?