2016/07に公開
facebook Page Pluginを埋め込む方法です(Like Boxは終了しました)。
基本、コードをコピペするだけで設置できます。
基本的には提供元サイトにFacebookページのURLなどを入力する箇所があるので、適当に入力・選択して、「コードを取得」で表示されるコードを適切にコピペするだけで設置できます。
ご自分で設置するときはローカル環境では表示しないので、サーバにアップして確認してください。
IE7以前のブラウザはには(FB側が)対応していません。IE8は表示していますが、いつまでサポートされるかわかりません(2016/08現在)。
<div id="fb-root"></div>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/ja_JP/sdk.js#xfbml=1&version=v2.7";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
※黒い部分をダブルクリックするとソースを選択できるので、コピーして使ってください。
FBのソーシャルプラグインを利用する際のお約束的コードです。(できるだけ)bodyタグの開始タグ直後に記述してください。この記述は同一ページにひとつあれば十分です(たとえばページプラグインの他に、同一ページにFBのいいねボタンやシェアボタンを設置していたとしても、この記述はひとつあれば良いです)。
(多分)このコードが大きく変更されることは稀かと思われますが、6行目最後の方のversion=v2.7は数字部分がわりと頻繁に変更される可能性が高いかもなので、ボタンが表示されなくなったら、まず提供元サイトでこの部分の変更がないか確認すると良いかも?
<div class="fb-page" data-href="表示したいFBページのURL" data-tabs="timelineなど" data-width="幅180〜500px" data-small-header="false" data-adapt-container-width="true" data-hide-cover="false" data-show-facepile="true"><blockquote cite="表示したいFBページのURL" class="fb-xfbml-parse-ignore"><a href="表示したいFBページのURL">Facebook</a></blockquote></div>
※黒い部分をダブルクリックするとソースを選択できるので、コピーして使ってください。
JavaScript SDKが記述済みならば、このclass[fb-page]のdivタグをまるっと表示したいところに貼り付けると、Page Pluginが表示されます。
特にcssを設定する必要はないのですが、スマートデバイスなどで幅を可変対応にしたいとき(「plugin containerの幅に合わせる」にチェックを入れた場合)は、直の親タグにpadding(もしかしたらmarginも)を設定しない方が綺麗に表示するかもしれません。横スクロールが出るとか、そういうときは親タグの左右のpaddingを外してみてください。
ちなみに2016/07現在では親タグにtext-align: center;を設定するとPage Pluginが中央表示になります。
jsの追加は特に必要ないのですが、このサンプルではスマートデバイスで見られることも意識して、端末が回転した(ユーザーが端末を持つ向きが縦/横変化した)ときのためにコードを追加しています。
提供元サイトで設定する際に「plugin containerの幅に合わせる」を選択しておけば、幅を指定していたとしても、親タグの幅に合わせるようになっています(たとえば最大幅の500pxを指定していても、これを選択しておくと親タグの幅が200pxならそれに合わせてくれます・・・ただし最小幅は180px)。
しかし、たとえばスマートデバイスではFBページプラグインを幅いっぱい(とはいえ最大500pxなので端末によってはいっぱいにならないですが)に表示するように親タグの幅をautoとか100%とかにしていたとして、縦持ちから横向きに回転させたとき、そのままでは縦持ちのときの幅のままになってしまいます。
縦→横ならさほど問題ではないと思いますが、横→縦に回転させたとき、表示されない部分が出てきます。
というわけで、スマートデバイスを回転させた際に、再読み込みするようにしてみました。
この場合、縦か横かを検知する必要はなく、回転したことさえ分かれば良いので、ウィンドウリサイズを検知するようにしています。
これはあくまで例であって、そもそも回転しようがなんだろうが最小幅(180px)に固定しておけばこのような差異は気にならないので、そのようにしても良いわけです。
瑣末な問題と無視しても良いですし、他に良い方法があれば、うまく工夫してみてください。
$(function() {
var htmlStr = $('#pageplugin').html();
var timer = false;
$(window).on('resize', function(){
if (timer !== false) { //リサイズ中に何度も処理が行われるのを防ぐ
clearTimeout(timer);
}
timer = setTimeout(function() {
$('#pageplugin').html(htmlStr); //親タグの幅を検知しないらしいので、親ごと再読み込み
window.FB.XFBML.parse(); //プラグインの再読み込み
}, 200);
});
});
※黒い部分をダブルクリックするとソースを選択できるので、コピーして使ってください。
上記のhtmlコードにはfacebook Page Pluginに親タグを記述していませんが、この処理をしたい場合は親タグにid[pageplugin](id名は任意。このjqueryを適用できるようにセレクターとして指定)を付与してください。
この処理を追加すると、古いIEでは再読み込みを繰り返してしまうことがあるようなので、そのような現象があった場合は、Modernizrなどをつかって、この処理を適用させないようにするなど対処してください。