Новые красивые кнопки "Поделиться" от Яндекса для Drupal

Сервис "Поделиться" от Яндекса позволяет легко добавить кнопки социальных сетей на сайт, но сам Яндекс на своих новых страничках использует другие, красивые кнопочки со счетчиками "лайков".

Эволюция внешнего вида кнопок

На самом деле это возможность этого же сервиса "Поделиться", но Яндекс ее не афиширует. И буквально сегодня, внешний вид кнопок изменился и стал еще круче. Если раньше значки соц сетей были на белом фоне, то теперь кнопки имеют сплошную заливку, а сами значки отображаются белым. Код для вставки красивых кнопок отличается от официально предложенного всего одним атрибутом, но поддерживает меньше сервисов и языков. Красивые кнопки подхватывают количество "лайков" из соц сетей, сделанных другими способами, но в Яндекс Метрике считаются только накликанные по яндексовым кнопкам.

Синтаксис

<head>
  <script src="//yandex.st/share/share.js"></script>
</head>
<body>
  <div class="yashare-auto-init" data-yashareQuickServices="facebook,twitter,gplus" data-yashareTheme="counter"></div>
</body>

Атрибуты, которые удалось обнаружить

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

Название Описание
data-yashareTheme Aтрибут, который отвечает за вывод красивых кнопок. Без него отображаются старые скучные кнопки.
Значение: counter
data-yashareQuickServices Используемые кнопки и их порядок. Возможные значения:
  • yaru — Я.ру
  • vkontakte — В контакте
  • facebook — Facebook
  • twitter — Twitter
  • odnoklassniki — Одноклассники
  • moimir — Мой мир
  • gplus — Google+
data-yashareL10n Язык. Возможные значения:
  • ru — Русский (по умолчанию)
  • en — Английский
  • be — Белорусский
  • uk — Украинский
data-yashareLink URL. Если не указан, то берется URL текущей страницы.
Формат значения: http://example.com
data-yashareTitle Заголовок. Если не указан, то берется заголовок текущей страницы.
data-yashareDescription Описание. Если не указано, то берется описание текущей страницы.
data-yashareImage Изображение. Если не указано, то берется первое попавшее изображение с текущей страницы.
Формат значения: http://example.com/image.png
data-yashareType Размер кнопок. Возможные значения:
  • big — большие (по умолчанию)
  • small — маленькие

Модуль для Drupal

Для Drupal 7 есть модуль стандартных кнопок Яндекса — Yandex.Share, и он всем хорош, несмотря на alpha статус. Первой мыслью было объединить все в одном этом модуле, и его автор даже был не против. Но в итоге, по совету старших по званию друпалеров, получился отдельный модуль Yandex.Share with Counters, который пока лежит в песочнице. В результате, для пользователей существующего модуля нет риска потерять свои кнопки если Яндекс вдруг прикроет эту недокументированную фичу, а тем кому нужны только новые кнопки не придется тянуть лишний вес API старых кнопок. Так же, мой модуль позволяет менять порядок кнопок, но не реализована возможность вывода кнопок как поля сущности. Я посчитал поле неподходящей конструкцией для этого, хотя при желании вывести блок в качестве поля можно, например, через Display suite.

Настройки модуля Yandex.Share with Counters

Так уж случилось, что это мой первый полезный (как я считаю) модуль для Drupal, и я надеюсь, он скоро обретет статус полноценного проекта. Но уже сейчас все прекрасно работает, в чем можно убедиться на сайте другого моего проекта — Jackal.su. Но и без ложки дегтя не обошлось: на стороне Яндекса к некоторым сервисам запросы ходят по протоколу http, что вызывает предупреждение, если на сайте используется SSL шифрование.

Обновление

Теперь кнопки со счетчиками официально доступны в конструкторе блока "Поделиться" и описаны в документации Яндекса. Никаких дополнительных возможностей, кроме нескольких дополнительных языков, не обнаружено. На работу предложенного модуля это никак не влияет, он, по прежнему, актуален.

Обновление

Изначально модуль позволял отображать кнопки только в блоке, но благодаря Константину @kkomelin появилась возможность отображения и в качестве поля. Это очень полезная фича, правда при добавлении поля, приходилось пересохранять существующие материалы. Избежать этого рутинного процесса поможет специальный модуль, написанный так же Константином, за что ему отдельная благодарность.