Twitter 「ツイートする」ボタンと Facebook App を埋め込む方法

2010年9月4日 at 16:02

当 concrete5 公式サイトに「ツイートする」ボタンを Facebook の「いいね」ボタン、そして Facebook のファンボックスを追加しました。

Twitterの「ツイートする」ボタンの設置は簡単です。

■ Twitter活用術 › ツイートボタン
http://twitter.com/goodies/tweetbutton

よる、自分の好みのオプションを加えて、各ページに追加するだけです。

今回 concrete5 公式サイトは、既に作られているページがたくさんあるため、テーマファイルに直接コードを埋め込みましたが・・・下書き共通ブロックとして、HTMLブロックを作成し任意のページに配置するのもいいでしょう。





Facebook のアプリの機能を搭載するには、ちょっと高度な知識が必要です。

※ 「いいね」ボタンや、「いいねボックス」

これはテーマファイルを修正する必要があります

1. Facebook App ID を取得
http://developers.facebook.com/setup/

各トップドメインごとにApp IDの習得が必要です。



2. HTMLタグ最初に宣言を追加

以下の宣言を HTML タグ内に追加します
──────────────────────────────
xmlns:fb="http://www.facebook.com/2008/fbml"
──────────────────────────────

例:
──────────────────────────────
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml" xml:lang="<?php echo LANGUAGE?>" lang="<?php echo LANGUAGE?>">
──────────────────────────────



3. bodyタグ直後に宣言を追加

<body>タグ直後に以下のような宣言を追加します。
【アプリのID】の欄を、さきほど取得した App ID を入力します。

──────────────────────────────
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '【アプリのID】',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
};
(function() {
var e = document.createElement('script');
e.src = document.location.protocol + '//connect.facebook.net/ja_JP/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());
</script>
──────────────────────────────

ちょっと分かりづらいですが、下から5行目のところで「ja_JP」とロケールを加えて日本語にすることを指示しています。


4. 任意の場所に Facebook のタグを埋め込む

こうすることにより、Facebook のいいねボタンや、ファンボックスをいくつもページ内に配置し、

http://developers.facebook.com/plugins

のような「いいね」ボタンやコメントボタンを concrete5 サイト内に配置することが出来ます。

実は・・・「いいね」ボタンや「ファンボックス」は、<iframe>タグを使っても可能ですが、同じページ内にいくつもの Facebook の機能を配置すると重くなってしまいます。

例えば「いいね」は、上記の実装しないと・・・

──────────────────────────────
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fexample.com%2Fpage%2Fto%2Flike&layout=standard&show_faces=true&width=450&action=like&colorscheme=light&height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>
──────────────────────────────

という <iframe> を使いますが

実装をきちんとすると

──────────────────────────────
<fb:like></fb:like>
──────────────────────────────

のシンプルな実装になります。
コード数が少なくなることに加えて、ページも軽くなります。

Facebookの運用を考えられている方は是非とも運用を考えられてください。




4. Facebook にシェアーされるときの<head>タグ

例えば、当 concrete5 公式サイトでは、meta titleを常に

【ページ名】::【サイト名】

と表示するように設定しています。

しかし Facebook でリンクを共有するときに、特別に【ページ名】のみを表示させる指定ができます。そのコードは、テーマ内ファイルの<head>か、/elements/header_required.php のどこかに潜ませてください

──────────────────────────────
<meta property="og:title" content="<?php echo htmlspecialchars($c->getCollectionName(), ENT_COMPAT, APP_CHARSET); ?>" />
<meta property="og:site_name" content="<?php echo SITE;?>" />
──────────────────────────────

Re: Twitter 「ツイートする」ボタンと Facebook いいねを Page List に

2010年9月4日 at 17:41
ちなみに、Page List のカスタムテンプレート機能を使い

http://yokosonews.com/

のように各ページのRT数や、「いいね」数のカウント一覧が表示できるようになりました。






そこのコードもシェアーします

──────────────────────────────
<a href="http://twitter.com/share" class="twitter-share-button" data-url="<?php echo BASE_URL . DIR_REL . $nh->getLinkToCollection($cobj)?>" data-text="<?php echo $title?>" data-count="horizontal" data-via="【自分のTwitterアカウント】" data-lang="ja">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script><fb:like layout="button_count" font="arial" href="<?php echo BASE_URL . DIR_REL . $nh->getLinkToCollection($cobj)?>"></fb:like>
──────────────────────────────





■ ブロック修正の仕方とカスタムテンプレートの仕組み
http://concrete5-japan.org/help/developer/block_custom_template/

を参考に、Page List カスタムテンプレートの該当箇所にこれを挿入すると、

http://yokosonews.com/

このトップ画面のページリストのように、各ページに対する「ツイートする」ボタンと「いいね」ボタンが表示されるようになります。