партнер компании 1с-битрикс
сайт фрилансера Сергея Эстрина
Войти как пользователь
Вы можете войти на сайт, если вы зарегистрированы на одном из этих сервисов:
Универсальная галерея - модуль для битрикс
Вам встречалась такая ситуация: отправляешь что-то в facebook с сайта, а там вместо нужной картинки - другая, выбранная случайно со страницы, заголовок не тот, который хотелось бы и т.д.? Я расскажу Вам как исправить эту ситуацию.

Для начала разберемся, как работает считывание информации со страницы сайта - картинок, заголовков и прочего.[spoiler] Эта информация не отправляется плагином Facebook при помощи JavaScript, как может сначала показаться. Когда вы отправляете какой-то пост на Facebook, например, при помощи плагина Like, плагин отправляет только адрес страницы. После этого, сервер Facebook запрашивает страницу по протоколу http, и собирает из нее нужную информацию.

Open Graph

Для того, чтобы разработчик сайта мог сам задавать эту информацию, служит протокол Open Graph. Он представляет собой набор метатегов. Для Facebook типичен следующий набор:


<meta property="og:type" content="website" />

<
meta property="og:title" content="Перенос инфоблоков Битрикс при помощи XML экспорта-импорта" />
<
meta property="og:url" content="h ttp://g-rain-design.ru/blog/posts/information-block-bitrix-xml-export-import/" />
<
meta property="og:image" content="h ttp://g-rain-design.ru/images/logo.png" />
<
meta property="og:site_name" content="g-rain design" />
<
meta property="fb:admins" content="123456789" />

Данный код можно сформировать, например, здесь: Like Button (см. Step 2 - Get Open Graph Tags)

Рассмотрим все теги по порядку:

  • og:type - указывает на тип контента, в данном случае "website"
  • og:title - заголовок страницы
  • og:url - адрес страницы, который будет использован в ссылке с сайта Facebook и при запросе страницы для считывания тегов
  • og:image - адрес изображения, которое будет использовано в посте Facebook
  • og:site_name - название сайта
  • fb:admins - один или несколько через запятую ID администраторов сайта на Facebook, можно получить на той же странице Like Button
В посте на Facebook эта информация будет выглядеть так (помимо Open Graph, также используется стандартный тег description):

Facebook post

Для CMS Битрикс в общих случаях можно использовать примерно такой код:


<meta property="og:type" content="website" />

<
meta property="og:title" content="<?=$APPLICATION->ShowTitle("title",true)?>" />
<
meta property="og:url" content="http://<?=SITE_SERVER_NAME?><?=$APPLICATION->GetCurPageParam("",Array("clear_cache","bitrix_include_areas"))?>" />
<
meta property="og:image" content="http://<?=SITE_SERVER_NAME?>/images/logo.png" />
<
meta property="og:site_name" content="<?$arSite=$APPLICATION->GetSiteByDir();echo $arSite["NAME"]?>" />
<
meta property="fb:admins" content="123456789" />

Тестирование

Если Вы сделали все как написано, но все равно не работает, не спешите ругать автора статьи :)

Дело в том, что запрашиваемые сервером Facebook данные кешируются для каждой страницы. Сбросить этот кеш можно, если зайти на страницу Facebook Debugger, ввести адрес Вашей страницы и нажать "Отладка". Кроме того, этот инструмент поможет увидеть, правильно ли сформированы теги. К сожалению, таким образом нельзя удалить кеш для всего сайта сразу, только для конкретной страницы.

Если все правильно, то в отладчике должно отобразиться примерно следующее:

Facebook Debugger

Дополнение: для размещения данных метатегов, а также любых плагинов социальных сервисов в битрикс, можно использовать модуль Централизованное управление социальными плагинами.

Чтобы оставить сообщение, авторизуйтесь, или войдите с помощью:
megamosk
31.07.2012 19:21:31
А прямо из шаблон с помощью $APPLICATION->SetPageProperty() возможно эти мета-данные в заголовок поместить?
31.07.2012 19:29:38
Нет, для этого предусмотрены только стандартные свойства - keywords, description (если вы только не пропишете вручную в header.php соответствующие метатеги).
Евгений Пашин
21.08.2012 11:58:30
Огромное спасибо за статью
День мучался как обновить информацию на кнопке Like. Спасибо за статью, выручили!:)
Виктор
10.10.2012 14:43:34
      А на друпал так можно сделать?
10.10.2012 16:16:47
Наверняка, хотя как - я не знаю, только с битриксом работаю.
Виктор
10.10.2012 16:19:41
Плохо. У меня open graph на друпале не всегда отображает картинки. я уже не знаю что делать.
Он видит путь .. ./sites/default/files/ИМЯ-КАРТИНКИ.jpg
а должен видеть вот этот .. ./sites/default/files/imagecache/actions_node/ИМЯ-КАРТИНКИ.jpg
А если и видит должный путь, то картинку не показывает, хотя воспользовавшись DEBUGER-oм, на facebook-e, он ее видит.
28.04.2013 11:16:34
Просто фантастично!
Космические Вам благодарности за раскрытие информации. Особенно о дебагере... :D
Самая сложность была понять, что те кракозябры, которые есть, это у него в кэше хранится, а не с сайта берет.

Правда, большое спасибо!
16.01.2014 16:52:58
Спасибо!
Все получилось, а подскажите как можно сбросить кэш для всего сайта? Или через какое-то время все страницы будут работать нормально?
17.01.2014 01:38:19
Не знаю, к сожалению. Но через какое-то время в любом случае все должны обновится, вряд ли там кеш вечный...

Есть вариант каким-то образом (с помощью какого-то скрипта) в цикле запускать страницу дебаггера developers.facebook.com/tools/debug/og/object?q=g-rain-design.ru , подставляя нужный вам путь (так на заграничных сайтах советуют, а какой-то кнопки для всего сайта нет похоже)
17.01.2014 09:22:12
Решено)
Нашла)
https://developers.facebook.com/tools/debug/
здесь надо написать адрес страницы со списком статей например и добавить в конце /?fbrefresh=hello
Работает!