(2016/9/6)完成版が「【はてなブログ高速化】自作ソーシャルボタン・シェアボタンで軽量化、ブログを高速に読み込む(完成) – IMUZA.com」にあります。
はてなブログのソーシャルボタン軽量化、最後の Google+ です。
これも他のボタンと同じように、Javascript で表示するか、ダイレクトリンクにするかのようです。ただ、公開範囲が違うのでしょうか、+button と Share の2種類があるようです。いずれにしても、iframe
を避けようとすると、リンクしかないようです。
Share | Google+ Platform for Web | Google Developers の中ほどに Share Link のサンプルコードがあります。
<a href="https://plus.google.com/share?url={URL}" onclick="javascript:window.open(this.href, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600');return false;"><img src="https://www.gstatic.com/images/icons/gplus-64.png" alt="Share on Google+"/></a>
サンプルコードを少し変更して、href
に直接 javascript を記述します。
(略) var googleButton = shareButtons.querySelector('a.googleplus-button'); var w = 500, h = 500, x = (window.screen.width - w ) / 2, y = (window.screen.height - h) / 2; googleButton.setAttribute('href', "javascript:void(window.open('https://plus.google.com/share?url=" + encodeURIComponent(permalink) + "', '_blank', 'width=" + w + ",height=" + h + ",left=" + x + ",top=" + y + "'))"); (略)
カスタマイズ > フッタ に入れる html は、
<a class="googleplus-button" href=""> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid meet" width="36px" height="22px" viewBox="-14 -8 72 44" class="u7 uzlpSb"><path d="M32 8.2h-3v4h-4V15h4v4h3v-4h4v-2.9h-4V8.2zm6-2V8h3v15h3V4l-6 2.2z"></path><path d="M11.4 11.3v4.5h6c-.4 2.6-2.7 4.5-6 4.5-3.6 0-6.6-3.1-6.6-6.7s2.9-6.7 6.6-6.7c1.7 0 3.1.5 4.3 1.7l3.2-3.2c-2-1.8-4.5-2.9-7.5-2.9C5.3 2.5.3 7.5.3 13.6s5 11.1 11.1 11.1c6.5 0 10.7-4.6 10.7-10.9 0-.8-.1-1.7-.2-2.5H11.4z"></path></svg> <span class="google-count"></span> </a>
画像は、はてなのウェブフォントには Google+ のアイコンがありませんので svg を使っています。
01Google+ のシェアカウント取得
Google+ のシェアカウント取得については、Javascript の情報が皆無でしたので苦労しましたが、php の情報を参考にやってみましたら、なんとか取得することができました。
結局、XMLHttpRequest を post で使い、パラメータを JSON で送ることでうまくいきました。
var getGoogleShareCount = function(obj, callback) { var url = 'https://clients6.google.com/rpc?key=AIzaSyCKSbrvQasunBoV16zDH9R33D88CeLr9gQ'; var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () { if (xhr.readyState === 4 && xhr.status === 200) { var obj = JSON.parse(xhr.responseText); callback(obj.result.metadata.globalCounts.count); } else { callback(0); } }; xhr.open('post', url, true); xhr.setRequestHeader( 'Content-Type', 'application/json' ); xhr.send(JSON.stringify(obj)); }; var obj = { "method":"pos.plusones.get", "id":"p", "params":{ "nolog":true, "id":permalink, "source":"widget", "userId":"@viewer", "groupId":"@self" }, "jsonrpc":"2.0", "key":"p", "apiVersion":"v1" }; getGoogleShareCount(obj, function(data) { googleButton.querySelector('.google-count').innerHTML = data; });
参考サイト
javascript – Get Google+ shares without API key for each page? – Stack Overflow
以上で、なんとか、はてなbookmark、Facebook、Twitter、Google+ のソーシャルボタンがシェアカウント付きのリンクになりました。後は、css で装飾してまとめれば完成です。
次回です。