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

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

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

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

Синтаксис

<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>

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

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

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

Модуль для Drupal

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

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

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

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

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

Вы здесь