いいねボタン(やシェアボタン)がFacebookに投稿するタイトル、画像、説明、URLは、それぞれ og:title, og:image, og:description, og:url を参照しています。
Facebookの開発者サイトのデバッグツールに、いいねボタンのdata-href
に指定しているURLを入力すると、そのURLをいいね、シェアしたときに取得される情報を見る事ができます。
さて、ページ遷移をせずに、Ajaxでページの一部を書き換えるようなページにおいては、data-href
やog*をどうすればいいでしょうか。
以下に例を示します。
// 動的コンテンツのロード
$.ajax('/path/to/fragment_contents', { id: 1 }, function (contents) {
$('#contents').html(contents);
FB.XFBML.parse(); // いいねボタンの再読み込み
})
.fb-like{ data: { href: "http://example.jp/base_page?id=#{@id}" } }
data-href
は土台のページのURLにクエリパラメータをくっつける形にしました。
og:*は動的に変更してやれば行けるのではと思ったんですが、いいねボタンのフォームはDOMから値を取得するのではなく、Facebookのクローラーが取得したページから値を取得しているようなので、上手くいきませんでした。
したがって、上記例ではhttp://example.jp/base_page?id={id}
が返すHTMLに、適切なog:*が設定されていなければなりません。
ついでにidが指定されている場合は指定されたidのコンテンツがロードされるようにしておくと良い感じですね。