2015-11-20 20:50:10 +03:00
# Social Likes
2016-04-06 17:00:08 +03:00
**[Try the all new Social Likes Next](http://social-likes-next.js.org/): no jQuery, no counters, Retina, IE11+, improved skins.
2015-11-20 20:50:10 +03:00
Beautiful share buttons with counters for popular social networks: Facebook, Twitter, Google+, Pinterest, Vkontakte, etc. Uses jQuery.
2013-02-05 13:25:43 +04:00
2015-11-20 20:50:10 +03:00
[![ ](http://wow.sapegin.me/image/1f1U2S130d3R/social-likes.png )](http://sapegin.github.io/social-likes/)
2013-04-23 11:47:35 +04:00
2015-11-20 20:50:10 +03:00
[See demo ](http://sapegin.github.io/social-likes/ )
2013-02-05 13:25:43 +04:00
2015-11-20 20:50:10 +03:00
## Features
2014-04-10 11:01:30 +04:00
2015-11-20 20:50:10 +03:00
- Easy to install.
- Beautiful and all in one style (with three different skins).
- Won’ t explode your page’ s layout.
## Installation and configuration
Use [interactive builder ](http://sapegin.github.io/social-likes/ ) to generate the code.
2016-01-10 21:26:12 +03:00
Or install via npm: `npm install --save social-likes` .
2015-11-20 20:50:10 +03:00
## Advanced configuration
### Layout
#### Default
All buttons in a row.
```html
< div class = "social-likes" >
< div class = "facebook" title = "Share link on Facebook" > Facebook< / div >
...
< / div >
2013-08-26 13:15:30 +04:00
```
2015-11-20 20:50:10 +03:00
#### Vertical
2013-08-26 13:15:30 +04:00
2015-11-20 20:50:10 +03:00
All buttons in a column.
2013-08-26 13:15:30 +04:00
2015-11-20 20:50:10 +03:00
```html
< div class = "social-likes social-likes_vertical" >
< div class = "facebook" title = "Share link on Facebook" > Facebook< / div >
...
< / div >
```
2013-08-26 13:15:30 +04:00
2015-11-20 20:50:10 +03:00
#### Single button
2016-01-10 21:26:12 +03:00
One button with a counter (sum of all the networks). Opens popup with like buttons in vertical layout. Use `data-single-title` attribute to change button title.
2015-11-20 20:50:10 +03:00
```html
< div class = "social-likes social-likes_single" data-single-title = "Share me!" >
< div class = "facebook" title = "Share link on Facebook" > Facebook< / div >
...
< / div >
2013-08-22 18:02:31 +04:00
```
2015-11-20 20:50:10 +03:00
#### Icons only
If you want to remove button titles add `social-likes_notext` class to make it looks better.
```html
< div class = "social-likes social-likes_notext" >
< div class = "facebook" title = "Share link on Facebook" > < / div >
...
< / div >
```
2015-11-20 19:15:29 +03:00
2013-08-26 13:15:30 +04:00
2013-02-05 13:25:43 +04:00
### Options
2015-11-20 20:50:10 +03:00
Options define via HTML data attributes or JavaScript parameters object.
2013-02-05 13:25:43 +04:00
2015-11-20 20:50:10 +03:00
`url`
2013-02-05 13:25:43 +04:00
2015-11-20 20:50:10 +03:00
URL of shareable page. Current page by default.
2013-02-05 13:25:43 +04:00
2015-11-20 20:50:10 +03:00
`title`
2013-02-05 13:25:43 +04:00
2015-11-20 20:50:10 +03:00
Title for Twitter, Vkontakte and LiveJournal. Current page’ s title by default.
2013-02-05 13:25:43 +04:00
2015-11-20 20:50:10 +03:00
`html`
2013-02-05 13:25:43 +04:00
2015-11-20 20:50:10 +03:00
HTML code for LiveJournal button. By default < A > tag with link to current page.
2013-02-05 13:25:43 +04:00
2015-11-20 20:50:10 +03:00
`counters`
2013-02-05 13:25:43 +04:00
2015-11-20 20:50:10 +03:00
Disables “likes” counters when “no”. Default: “yes”.
2013-02-05 13:25:43 +04:00
2015-11-20 20:50:10 +03:00
`zeroes`
2014-02-03 12:09:25 +04:00
2015-11-20 20:50:10 +03:00
Show counters even when number is `0` . Default: “no”.
2014-02-03 12:09:25 +04:00
2015-11-20 20:50:10 +03:00
`single-title`
2013-02-05 13:25:43 +04:00
2015-11-20 20:50:10 +03:00
Share button title for “single button” mode. Default: “Share”.
2013-02-05 13:25:43 +04:00
2015-11-20 20:50:10 +03:00
Examples:
2013-02-05 13:25:43 +04:00
2015-11-20 20:50:10 +03:00
```html
< div class = "social-likes" data-url = "http://landscapists.info/" data-title = "Landscapists of Russia" >
…
< / div >
```
```html
< div class = "social-likes social-likes_single" data-single-title = "This is Sharing!" >
…
< / div >
```
2013-02-05 13:25:43 +04:00
2013-11-01 19:00:21 +04:00
```js
2015-11-20 20:50:10 +03:00
$('.social-likes').socialLikes({
url: 'https://github.com/sapegin/social-likes/',
title: 'Beautiful “like” buttons with counters for popular social networks',
counters: true,
singleTitle: 'Share it!'
});
2013-09-12 12:23:57 +04:00
```
2013-08-08 11:00:53 +04:00
2015-11-20 20:50:10 +03:00
### Services specific options
2013-08-08 11:00:53 +04:00
2015-11-20 20:50:10 +03:00
#### Twitter
2013-08-08 11:00:53 +04:00
2015-11-20 20:50:10 +03:00
You can specify `via` (site’ s or your own Twitter) and `related` (any other Twitter you want to advertise) values for `<div class="twitter">` :
```html
< div class = "twitter" data-via = "sapegin" data-related = "Landscapists" > Twitter< / div >
2014-02-12 16:40:51 +04:00
```
2015-11-20 20:50:10 +03:00
#### Pinterest
2014-04-10 11:01:30 +04:00
2015-11-20 20:50:10 +03:00
You should specify an image URL via data-media attribute on `<div class="pinterest">` :
2013-06-20 14:53:19 +04:00
2015-11-20 20:50:10 +03:00
```html
< div class = "pinterest" data-media = "http://example.com/image/url.jpg" > Pinterest< / div >
```
2013-02-05 13:25:43 +04:00
2015-11-20 20:50:10 +03:00
### Manual initialization
Could be useful on dynamic (AJAX) websites.
```html
< div id = "share" >
< div class = "facebook" > Facebook< / div >
...
< / div >
2013-02-05 13:25:43 +04:00
```
2015-11-20 20:50:10 +03:00
```javascript
$('#share').socialLikes();
```
2013-10-04 14:31:55 +04:00
2013-02-05 13:25:43 +04:00
2015-11-20 20:50:10 +03:00
### Dynamic URL changing
2013-02-05 13:25:43 +04:00
2015-11-20 20:50:10 +03:00
You can dynamically replace URL, title and Pinterest image without reinitialization.
```html
< div id = "share2" class = "social-likes" data-url = "http://example.com/" data-title = "My example" >
< div class = "facebook" > Facebook< / div >
...
< / div >
```
```javascript
$('#share2').socialLikes({
url: 'https://github.com/',
title: 'GitHub',
data: {
media: 'http://birdwatcher.ru/i/userpic.jpg' // Image for Pinterest button
}
});
2013-02-05 13:25:43 +04:00
```
2014-04-10 11:01:30 +04:00
2015-11-20 20:50:10 +03:00
### Refreshing counters
2014-04-10 11:01:30 +04:00
2015-11-20 20:50:10 +03:00
By default counters for any unique URL requested only once. You can force new request with `forceUpdate` option:
2014-04-10 11:01:30 +04:00
2015-11-20 20:50:10 +03:00
```javascript
$('#share2').socialLikes({
forceUpdate: true
});
2013-02-05 13:25:43 +04:00
```
2013-04-23 11:23:27 +04:00
2015-11-20 20:50:10 +03:00
### Events
2013-04-23 11:23:27 +04:00
2015-11-20 20:50:10 +03:00
#### `counter.social-likes`
2014-07-04 16:37:33 +04:00
2015-11-20 20:50:10 +03:00
Triggers for every counter.
```javascript
$('.social-likes').on('counter.social-likes', function(event, service, number) {
// service: facebook, twitter, etc.
});
2014-07-04 16:37:33 +04:00
```
2014-01-14 10:18:07 +04:00
2015-11-20 20:50:10 +03:00
#### `ready.social-likes`
2014-03-06 17:35:11 +04:00
2015-11-20 20:50:10 +03:00
Triggers after all counters loaded.
2014-11-19 18:38:07 +03:00
2015-11-20 20:50:10 +03:00
```javascript
$('.social-likes').on('ready.social-likes', function(event, number) {
// number is total number of shares
});
```
2014-11-19 18:38:07 +03:00
2015-11-20 20:50:10 +03:00
#### `popup_opened.social-likes`
Triggers after popup window opened.
```javascript
$('.social-likes').on('popup_opened.social-likes', function(event, service, win) {
// win is popup window handler (window.open())
});
2014-11-19 18:38:07 +03:00
```
2015-11-20 20:50:10 +03:00
#### `popup_closed.social-likes`
2014-11-19 18:38:07 +03:00
2015-11-20 20:50:10 +03:00
Triggers after popup window closed.
2014-11-19 18:38:07 +03:00
2015-11-20 20:50:10 +03:00
```javascript
$('.social-likes').on('popup_closed.social-likes', function(event, service) {
// Request new counters
$(event.currentTarget).socialLikes({forceUpdate: true});
// Or just increase the number
var counter = $(event.currentTarget).find('.social-likes__counter_' + service);
counter.text(+(counter.text()||0)+1).removeClass('social-likes__counter_empty');
});
```
2014-11-19 18:38:07 +03:00
2015-11-20 20:50:10 +03:00
### Adding your own button
You can find some custom buttons in `contrib` folder.
Define `socialLikesButtons` object:
```javascript
var socialLikesButtons = {
surfingbird: {
popupUrl: 'http://surfingbird.ru/share?url={url}',
popupWidth: 650,
popupHeight: 500
}
};
2014-11-19 18:38:07 +03:00
```
2015-11-20 20:50:10 +03:00
Or with a custom click handler:
```javascript
var socialLikesButtons = {
livejournal: {
click: function(e) {
// this.widget.data('something')
}
}
};
```
Add some CSS:
```css
.social-likes__button_surfingbird {
background: #f2f3f5 ;
color: #596e7e ;
border-color: #ced5e2 ;
}
.social-likes__icon_surfingbird {
background: url(http://surfingbird.ru/img/share-icon.png) no-repeat 2px 3px;
}
```
And use it like any other button:
```html
< div class = "surfingbird" > Surf< / div >
```
See sources (`src` folder) for available options and class names and `contrib` folder for custom buttons examples.
## FAQ
### Likes or shares?
This plugin allows your users to “share” the content of your website. (Un)fortunately¹ real “likes” are possible only when you use original Facebook, Google+, etc. buttons.
¹ I believe that “shares” are much better and valuable than “likes” because they’ re more visible in feed and users could add they’ re own comments to links they share. “Like” costs nothing.
### How to change title, description and image
You can use [Open Graph ](http://ogp.me/ ). It works for [Facebook ](http://davidwalsh.name/facebook-meta-tags ), Twitter, [Google+ ](https://developers.google.com/+/web/snippet/ ), [Pinterest ](http://developers.pinterest.com/rich_pins/ ) and [Vkontakte ](http://vk.com/dev/widget_like )).
You can add additional Twitter data using [Twitter Card ](https://dev.twitter.com/cards/overview ). You have to [approve ](https://dev.twitter.com/docs/cards/validation/validator ) every type of Twitter Card.
```html
< meta property = "og:type" content = "article" >
< meta property = "og:url" content = "{page_url}" >
< meta property = "og:title" content = "{title}" >
< meta property = "og:description" content = "{description}" >
< meta property = "og:image" content = "{image_url}" >
< meta name = "twitter:card" content = "summary" >
< meta name = "twitter:site" content = "@SiteTwitter" >
< meta name = "twitter:creator" content = "@sapegin" >
```
If you’ re experiencing any problems with meta data try [Open Graph Debugger ](https://developers.facebook.com/tools/debug/ ) and [Twitter Card Validator ](https://dev.twitter.com/docs/cards/validation/validator ).
2016-02-18 11:08:33 +03:00
### How to fix Twitter counter
Twitter counter API [was disabled by Twitter ](https://github.com/sapegin/social-likes/releases/tag/3.0.15 ) but you can replace it with [OpenShareCount ](http://opensharecount.com/ ). It’ s free but you have to register your site there.
1. [Create account ](http://opensharecount.com/ ) at OpenShareCount.
2. Add this script before you include `social-likes.js` :
```html
< script >
var socialLikesButtons = {
twitter: {
counterUrl: 'https://opensharecount.com/count.json?url={url}& callback=?',
convertNumber: function(data) {
return data.count;
}
}
};
< / script >
```
2015-11-20 20:50:10 +03:00
### How to use Social Likes with Wordpress, etc.
See [wiki ](https://github.com/sapegin/social-likes/wiki/How-to-use-Social-Likes-with-Wordpress,-etc. ).
### How to track activity with Google Analytics
You can track how many people click on each social button on your site with Google Analytics (or other analytics service). Note that you can track clicks only, not real shares.
```javascript
$(document).on('popup_opened.social-likes', function(event, service) {
ga('send', 'social', service, 'share', location.href);
});
```
## Troubleshooting
### The buttons don’ t work, displayed without design or don’ t displayed at all
First look at your [browser’ s console ](http://www.wickedlysmart.com/hfjsconsole/ ). If you see an error “Uncaught ReferenceError: jQuery is not defined”:
![](http://wow.sapegin.me/image/1f1h1d0z2d1j/Image%202014-11-19%20at%205.45.14%20PM.png)
Then you need to include jQuery into your page. Make sure you use version at least 1.7 (and lower than 2.0 if you need to support IE8) and you include jQuery before `social-likes.js` . The easiest way to do it is to use Google CDN:
```html
< script src = "http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" > < / script >
```
If you don’ t see any error check the following:
1. `social-likes.js` is included after jQuery and the path is correct.
2. `social-likes_flat.css` or `social-likes_classic.css` or `social-likes_birman.css` is included in < head > of your page and the path is correct.
So you need your page to look like this:
```html
<!DOCTYPE html>
< html >
< head >
< meta charset = "utf-8" >
< title > Welcome to my site!< / title >
< link href = "social-likes_birman.css" rel = "stylesheet" >
< script src = "http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" > < / script >
< script src = "social-likes.js" > < / script >
...
```
### Counters don’ t work
2016-01-15 23:12:15 +03:00
**Twitter counter was disabled in [3.0.15 ](https://github.com/sapegin/social-likes/releases/tag/3.0.15 ).**
2015-11-20 20:50:10 +03:00
In most cases if you don’ t see counters it’ s because social networks APIs return zeros. You could check API requests results in Network tab in your browser’ s developer tools:
![](http://cl.ly/image/013x2M01021N/Image%202014-03-06%20at%205.33.14%20%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%20%D0%BF%D0%BE%D0%BB%D1%83%D0%B4%D0%BD%D1%8F.png)
Double check that you use canonical URLs (without extra parameters such as `utm_source` ). You can change URL via [`data-url` option ](#options ).
If you have more than one Social Likes blocks on a page with different URLs, Google+ counter will work only for the first block. Google+ counter also won’ t work when you refresh counters with `forceUpdate` option or change URL dynamically.
If your site have internationalized domain name (e.g. `президент.рф` ) make sure you convert it to [Punycode ](https://en.wikipedia.org/wiki/Punycode ) (e.g. `xn--d1abbgf6aiiy.xn--p1ai` ).
If you’ re sure that it’ s a bug please file an issue **and provide a link** to a page with non-working counter.
## Release History
2013-02-05 16:49:27 +04:00
2015-11-22 09:36:51 +03:00
The changelog can be found on the [Releases page ](https://github.com/sapegin/social-likes/releases ).
2013-02-05 13:25:43 +04:00
2015-11-20 20:50:10 +03:00
## Contributing
Everyone is welcome to contribute. Please take a moment to review the [contributing guidelines ](Contributing.md ).
## Author
* [Artem Sapegin ](http://sapegin.me/ )
2013-02-05 13:25:43 +04:00
---
## License
2015-11-20 20:50:10 +03:00
The MIT License, see the included [license.md ](license.md ) file.