Модуль OpenGraph для Битрикс. Быстрая и автоматическая интеграция

Модуль OpenGraph для Битрикс. Быстрая и автоматическая интеграция

24 сентября 2017


Автор: dev2fun
На неделе команда Dev2Fun выпустила новое обновление (1.1.0), которое сильно усовершенствовало модуль.

Всем кто использует версию 1.0.7 и младше, рекомендуем обновиться.

Миграция с 1.0.x на 1.1.x

Миграция происходит при обновлении автоматически.
Внимание! В модуле закончена поддержка php5.3 и младше.

Что нового

  • Добавлен функционал страниц исключений вывода OpenGraph
Теперь вы можете указать страницы на которых не нужно выводить теги OpenGraph.
Пути до страниц указывать от корня.

Пример 1:

Задача:
Нужно запретить вывод мета-тегов OpenGraph для страницы "/catalog/auto/audi/a8/", а также запретить вывод для главной страницы.
Решение:
Указываем в поле "catalog/auto/audi/a8/", а в другом поле "index" (index, от корня, это ключевое значение, которое модуль воспримет за главную страницу).

[IMG ID=6186405file]

  • Добавлена возможность указать OpenGraph в элементах инфоблока
[IMG ID=6186407file]


Выводятся все поля, которые указаны в  настройках модуля.
Поле description - выводится как textarea
Поле image- выводится как fileinput
Все остальные поля выводятся, как input

Поля которые не выводятся, но значения проставляются автоматически:
  • url - текущая отображаемая страница
  • image:width - ширина картинки, которая сейчас в og:image
  • image:type - тип картинки (png,jpg, etc.), которая сейчас в og:image
  • image:height - высота картинки, которая сейчас в og:image
  • site_name - название сайта из настроек сайта
  • Добавлена возможность указать OpenGraph в разделах инфоблока
[IMG ID=6186457file]

Выводятся все поля, которые указаны в  настройках модуля.
Поле description - выводится как textarea
Поле image- выводится как fileinput
Все остальные поля выводятся, как input

Поля которые не выводятся, но значения проставляются автоматически:
  • url - текущая отображаемая страница
  • image:width - ширина картинки, которая сейчас в og:image
  • image:type - тип картинки (png,jpg, etc.), которая сейчас в og:image
  • image:height - высота картинки, которая сейчас в og:image
  • site_name - название сайта из настроек сайта

  • Добавлена настройка вывода OpenGraph полей в элементах и разделах
[IMG ID=6186471file]
  • Добавлена загрузка картинки для OpenGraph, по умолчанию
[IMG ID=6186477file]


Как интегрировать поддержку OpenGraph


Мы сделали автоматический вывод Open Graph для:
  • title - из заголовка страница
  • description - из описания страницы
  • url - текущая страница
  • site_name - название из настроек сайта
  • type - по умолчанию website
Для всего остального и собственных полей мы сделали 2 способа интеграции

Способ #1

Указать на нужных страницах названия полей добавляя впереди "og:"

Примеры:

Переписать поле og:title
$APPLICATION->SetPageProperty('og:title','Новое значение'); 
// или
// $APPLICATION->SetDirProperty('og:title','Новое значение');


Установить значение в og:image
$APPLICATION->SetPageProperty('og:image','http://rockisfest.ru/upload/resize_cache/iblock/5a9/380_9999_1/5a9163ca1aca97d620d6640dd271a7f6.jpg');  
// или  
// $APPLICATION->SetDirProperty('og:image','http://rockisfest.ru/upload/resize_cache/iblock/5a9/380_9999_1/5a9163ca1aca97d620d6640dd271a7f6.jpg');


Установить любое своё свойство, допустим og:custom

Предварительно нужно проверить добавлено ли поддержка custom в настройках модуля, если нет, то добавить
$APPLICATION->SetPageProperty('og:custom','Новое значение'); 
// или
// $APPLICATION->SetDirProperty('og:custom','Новое значение');


Если нужно сделать установку значений из элементов и разделов, то необходимо прописывать в result_modifier.php используемого шаблона.
После чего сбросить кэш.

Способ #2

Этот способ наиболее проще первого, но, в данной версии, представляет меньше гибкости.
Этот способ мы сделали для более удобной интеграции Open Graph в компонентах.

Необходимо в result_modifier.php или component_epilog.php прописать вызов метода:


\Dev2fun\Module\OpenGraph::Show($refId,$type);

Где $refIf - идентификатор элемента или раздела
Где $type - тип объекта element или section.

element - вывод для элементов инфоблока
section - вывод для разделов инфоблока

В результате result_modifier.php должно получиться следующее:

Для компонента bitrix:news.detail
\Dev2fun\Module\OpenGraph::Show($arResult['ID'],'element');

Для компонента bitrix:news.list
\Dev2fun\Module\OpenGraph::Show($arResult['ID'],'section');



Ближайшие релизы: