備忘録的なこのブログでも、ソーシャルボタンを貼っつけました。

今の日本で人気どころの以下4つ
ーーーーーーーーーーーーーーーーーーーーーーーー
・facebookいいねボタン
・tweetボタン
・はてぶボタン
・googleプラスボタン 
ーーーーーーーーーーーーーーーーーーーーーーーー

それぞれのボタン作成のリンク先はこちら

■facebookいいねボタンを作成
facebook developer  

■tweetボタンを作成
Twitter ツイートボタン作成 

■はてぶボタン
はてばブックマークボタンの作成・設置について

■googleプラスボタン
+1button



facebookボタンとはてぶボタンを賢くするために

各作成ページで、そのままスクリプトを作って、ブログなり、サイトなりに貼れば、機能するんですが、運用上ちょっと困った問題もあります。

それは、facebookボタンとはてぶボタンが賢くないってこと。


twitterボタンと+1ボタンは、そのページのURLとタイトルを自動的に引っ張ってきてくれるので、いちどスクリプトを作ったら、どのページに貼っつけるにしても、おなじスクリプトを貼ればいいです。


でも、facebookとはてぶボタンは、スクリプトごとにページURLとタイトルを書き換えなきゃいけない。

例えば、ブログの1ページをかいて、そこにボタンを設置した場合、そのページのURLでスクリプトを作って貼り付けることになりますが、ブログの2ページ目を書いて、そこにボタンを設置したい場合は、また新しく生成されるURLでボタンを作成しないといけない。

これは面倒っすね。


そこで、javascriptで、facebookとはてぶに関しては自動的にURLとタイトルをもってきちゃう仕組みを作ります。

そうすると、4つのボタンすべてで、どのページに貼り付けても、”そのページ”のソーシャルリンクになってくれます。

具体的には以下

<div class="btn_social">
<ul>
<li class="twitter"><a href="https://twitter.com/share" class="twitter-share-button twitter-count-vertical" data-lang="ja" data-count="vertical">ツイート</a><script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script></li>
<li class="hatena">
<script type="text/javascript" language="javascript">
document.write("<a href=\""+document.URL+"\" class=\"hatena-bookmark-button\" data-hatena-bookmark-title=\""+document.title+"\" data-hatena-bookmark-layout=\"vertical-balloon\" title=\"このエントリーをはてなブックマークに追加\"><img src=\"http://b.st-hatena.com/images/entry-button/button-only.gif\" alt=\"このエントリーをはてなブックマークに追加\" width=\"20\" height=\"20\" style=\"border: none;\" /></a>");</script>
<script type="text/javascript" src="http://b.st-hatena.com/js/bookmark_button.js" charset="utf-8" async="async">
</script>
</li>
<li class="facebook">
<script type="text/javascript" language="javascript">
document.write("<iframe src=\"//www.facebook.com/plugins/like.php?href=http%3A%2F%2F"+document.URL+"&amp;send=false&amp;layout=box_count&amp;width=80&amp;show_faces=false&amp;font&amp;colorscheme=light&amp;action=like&amp;height=90&amp;appId=283685701733129\" scrolling=\"no\" frameborder=\"0\" style=\"border:none; overflow:hidden; width:80px; height:90px;\" allowTransparency=\"true\"></iframe>");
</script>
</li>
<li class="googleplus">
<div class="g-plusone" data-size="tall"></div>
<!-- Place this tag after the last +1 button tag. -->
<script type="text/javascript">
window.___gcfg = {lang: 'ja'};
(function() {
var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
po.src = 'https://apis.google.com/js/plusone.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
})();
</script></li>
</ul>
</div>

このブログで使ってるものです。

長くてぎょっとしたかもですが、このブログと同じ形、ボックス型のソーシャルボタンを作りたいときは、まるまるコピペで大丈夫だと思います。


(※だめだったら指摘してください・・)


twitterとgoogleplusは作成したまんま貼っています。


はてなの部分だけ抜粋

<li class="hatena">
<script type="text/javascript" language="javascript">
document.write("<a href=\""+document.URL+"\" class=\"hatena-bookmark-button\" data-hatena-bookmark-title=\""+document.title+"\" data-hatena-bookmark-layout=\"vertical-balloon\" title=\"このエントリーをはてなブックマークに追加\"><img src=\"http://b.st-hatena.com/images/entry-button/button-only.gif\" alt=\"このエントリーをはてなブックマークに追加\" width=\"20\" height=\"20\" style=\"border: none;\" /></a>");</script>
<script type="text/javascript" src="http://b.st-hatena.com/js/bookmark_button.js" charset="utf-8" async="async">
</script>
</li>

 長いので、ウエーってなりますが、よーくみると、

document.write();

を使って、htmlを書き出しているだけです。


はてぶのボタンを作成したときのaタグの部分
<a href="http://b.hatena.ne.jp/entry/●●URL●●" class="hatena-bookmark-button" data-hatena-bookmark-title="タイトル" data-hatena-bookmark-layout="vertical-balloon" title="このエントリーをはてなブックマークに追加">〜
の●●URL●●とタイトルの部分を、document.URLとdocument.titleに置き換えてるだけですね。


document.URL → javascriptでいまいるページのURLを出す命令

document.title → javascriptでいまいるページのタイトルを出す命令



置き換えるとこうなります。

document.write("<a href=\""+document.URL+"\" class=\"hatena-bookmark-button\" data-hatena-bookmark-title=\""+document.title+"\" data-hatena-bookmark-layout=\"vertical-balloon\" title=\"このエントリーをはてなブックマークに追加\">〜);
 
いちいち出てくる「\」は、エスケープのための文字で、「"」とかをjavascript内で文字列として使いたいときは前に 「\」を付けます。「¥」でもOKなはず。


facebookも同じようなやりかたでOKです。