Drupal を使ったサイトに ツイートボタン を設置してみた

tweet_button_view.png
今、Twitter の公式 ツイートボタン を自分のサイトに設置するのが流行っているみたいなので、早速やってみた。

ツイートボタンの HTMLタグ生成

ツイートボタンを生成する画面http://twitter.com/goodies/tweetbutton にアクセスして、ボタンを作成する。たぶん、そんなにいじる項目は無いと思う。僕はボタンを水平方向にカウント数を表示する奴に変更しただけ。

Drupal への組み込み

生成されたボタンの HTMLコードをコピーして、それを自分のサイトのテーマの node.tpl.php ファイルの好きなところに付け加える。僕は、ブログだけにはりたかったので、node-story.tpl.php ファイルに付け加えた(ちなみに、僕のブログは、Drupal の BLOG モジュールを使ってなくて、Story コンテンツタイプを使っている)。

<?php if ($page): ?>
<p><a href="http://twitter.com/share" class="twitter-share-button"
      data-count="horizontal" data-via="randynet"
      data-lang="ja">Tweet</a>
   <script type="text/javascript"
           src="http://platform.twitter.com/widgets.js"></script>
</p>
<?php endif; ?>

上記 <?php if ($page): ?> がミソで、この if 文を使うことにより、一覧には表示せずに個別ページだけに表示される。

実際試しでクリックしてみた(本当は僕以外の人たちにクリックしていただくのが良いのだけど、あんまりアクセスも無いサイトなので…)。クリック数のところをクリックすると、だれがツイートしてくれたのかが見れる。これは、Twitter の検索機能を使って表示してくれる。

Twitter の検索で、URLをキーに検索してくれるとは知らなかった。ツイートボタンによる、t.co ドメインの短縮URLだけじゃなくて、bit.ly の短縮URLもひらってくれる。他の短縮 URL にも対応しているのかもしれない。

一覧に表示する

一覧に表示する事を想定してなかったけど、やっぱり一覧にも表示したい。さっきの例だと、URLは JavaScript が(おそらく現在表示しているページの URL を)取得したものになっている。そのままだと都合が悪い。出来ればその各エントリのページの URLを指定したい。また、同じようにツイートするテキストの指定も必要である。

tweet_button_customize_url.png
幸い、ツイートボタンには URL やツイートするテキストを指定するオプションもあるみたいなので、それを利用してみた。

生成される HTML タグを見ると、data-url 属性に URLを、data-text 属性にツイートするテキストを、data-via にはこのボタンを設置する人の Twitter ID を(上記 Twitter のサイトでは「ユーザーがあなたのWEBサイトからコンテンツを共有し終わった後に、そのユーザーにフォローするように促すためのTwitterアカウント」という説明があった)指定している様子である。これを利用して、以下のコードを node-story.tpl.php ファイルに書く。

<?php if (!$page): ?>
<a href="http://twitter.com/share"
   class="twitter-share-button"
   data-count="horizontal"
   data-via="randynet"
   data-url="http://www.randynetwork.com<?php echo $node_url; ?>"
   data-text="<?php echo $title; ?> - ランディネットワーク"
   data-lang="ja">Tweet</a>
<script type="text/javascript"
        src="http://platform.twitter.com/widgets.js"></script>
<?php endif; ?>

data-url 属性にそのサイトのコンテンツの URLを指定すると、カウントもちゃんと拾ってくれる。

あと、<?php if (!$page): ?> のように指定しているので、こっちは一覧のみで表示される。

実はモジュール版も存在する

僕のサイトのテンプレートが出来てから調べてみたら、ちゃんと drupal.org にモジュール版が登録されていた。多分、Twitter の公式発表の後すぐに作られたんじゃないかな。今年の 8月 12日にバージョン 1.0 がリリースされている。

Tweet Button Module

ちょっとインストールしたくなかったので、ソースコードを眺めてみる。
僕の示した例とは違って、一覧表示の時に表示されるようにはなっていない。一覧に表示するのが良いかどうかは今後みていこうとは思っているけど。あと、当然のことながら、link のところ(新しいコメントの追加 続きを読む のところ)に表示されるようになっている。僕のやりかただと、表示したい好きなところに書くことが出来る。

僕は、何でもかんでもモジュールを使うっていう考えじゃなくて、出来れば自分の好きな場所に表示したいし、自分の好きなように作りたいと思っている。けど、プログラムはバグがつきもの。プログラムなんて書かないで、大勢の人が利用するモジュールを使う方が当然良い。書かなければいけない場合でも可能な限りソースコードは短く書くべきで、出来ればモジュールを拡張するためのモジュールを作るだけにしておく(Drupal のモジュールを拡張するためのモジュールを作る例)。

今回のは、出たばっかりだと言うのもあると思うけど、僕のサイトでは使いたいと思える出来栄えではなかったので、モジュール版は使わなかった。

ツイートボタンのカウント

が、今は 2件ある。

今設置したばかりだから(もしかしたらずっと…??)誰もクリックしてくれないと思って自分でクリックしたのが 1件目。

もう 1件は、bit.ly 経由で投稿した。

どっちも自分。虚しい。
誰か、頼む。

カウントと Twitter 検索の結果があわないのは

なぜだろう。

これ。
http://www.randynetwork.com/blog/397

もしかしたら、非公開モードでつぶやいている人がいてくれるのかな。
なんか変な事書かれていたらいやだなーとか考えてしまう。

カウントが 0に戻っている

どうして? 確かに僕自身で 2回投稿しているのに。

と思ったけど、よく考えたらこのエントリの URLを変更してしまったのだった。

新しいコメントの投稿

このフィールドの内容は非公開にされ、公表されることはありません。
  • HTMLタグは使用できません
  • 行と段落は自動的に折り返されます。

書式オプションに関するより詳しい情報...

CAPTCHA
この質問はあなたが人間であるかどうかについて調べる為と、自動化したスパムを防ぐ為のものです。うまくいかない場合は電子メールでお問い合わせ下さい。
イメージ CAPTCHA
画像の中に見える文字を入力して下さい