Готовое решение для добавления кнопок социальных сетей на сайт.
- Подключить SocialButtons.css и SocialButtons.js или их минифицированные версии
- Создать экземпляр кнопок с помощью вызова new SocialButtons, передав нужные параметры
- При необходимости подключить es6-promise.js
- Никакие дополнительные библиотеки (например jQuery) для работы не требуются
- Установить можно так же из NPM:
npm install social-buttons
На данный момент это - Вконтакте, Facebook, Google+, Одноклассники, Twitter, Мой Мир, Livejournal, Linkedin
Функциональные названия:
['facebook', 'vkontakte', 'odnoklassniki', 'googleplus', 'twitter', 'moimir', 'lj', 'linkedin']
services
- Массив сервисов, кнопки которых должны быть сгенерированы в текущем виджете
components
- Какие элементы кнопки должны быть отрисованы.
Доступные значения: icon
, text
, count
(положение элементов в массиве не имеет значения)
counter
- Отображать ли счетчики публикаций. По умолчанию false
outputCountCallback
- Функция для изменения отображения счетчика, ожидается, что будет возращен результат модификации.
В единственном параметре можно получить текущий счетчик.
theme
- Варианты отображения кнопок. Изначально доступно несколько тем: default
, color
Вы так же можете создать свою тему, добавив соответствующие стили, сами кнопки получат постфикс вида - b-social-button--yourtheme
showZeros
- Показывать ли счетчики, если они равны нулю. По умолчанию - false
buttonSize
- Размер кнопок: small
, middle
, large
или любое другое значение, которое может быть преобразовано в число
id
- Уникальный идентификатор DOM элемента, к которому будет привязан и отрисован виджет кнопок
url
- URL расшариваемой публикации, параметр имеет наивысшей приоритет, если он не указан значение берется из meta тега property="og:url
, по умолчанию текущий url
title
- Заголовок расшариваемой публикации, параметр имеет наивысше йприоритет, если он не указан значение берется из meta тега property="og:url
, по умолчанию title
текущей страницы
description
- Описание расшариваемой публикации, параметр имеет наивысшей приоритет, если он не указан значение берется из meta тега property="og:description
image
- Изображение расшариваемой публикации, параметр имеет наивысшей приоритет, если он не указан значение берется из meta тега property="property="og:image
helpers
- Объект кастомизации кнопок виджета, для каждой социальной сети содержит дочерний объект, который доступен по ключу (названию сервиса), например "vkontakte", который в свою очередь имеет следующее поля:
text
- Текст кнопкиtitle
- Тегtitle
для кнопкиcounter
- Пользовательская функция, переопределяет сервис получение счетчика по-умолчаниюcustomClass
- Дополнительный класс для кастомизации
callbacks
- Объект с функциями, которые будут вызваны при наступлении определенных событий, по-умолчанию все функции объекта callbacks
равны - NULL
.
create
- виджет успешно созданshare
- попытка расшаривания публикации
Так же Для каждой функции при создании в параметре можно получить полезные данные о событии
Используйте Open Graph разметку на странице.
Это поможет подхватывать социальным сетям правильные данные при публикации.
<meta property="og:url" content="share url">
<meta property="og:title" content="share title">
<meta property="og:description" content="share content">
<meta property="og:image" content="share image">
Стоит проверить консоль:
Ошибка: #yourID not found!
Решение:
- Вызов new SocialButtons необходимо осуществить после загрузки DOM дерева - DOMContentLoaded
- Проверьте наличие элемента c ID - yourID на вашей странице
Ошибка: Uncaught ReferenceError: Promise is not defined
Решение: Подключите файл es6-promise.js
Некоторые социальные сети не позволяют получить количество публикаций (шаринга), например у Twitter, такая возможность отсутствует
Выполните рекомендации из предыдущего раздела
Все современные браузеры.
IE начиная с 9 версии и выше.