WordPress には最適かもしれない拍手ツール 【GJ!】

2008年9月13日

エントリ内に含めてある Web 拍手 のツールですが、PatiPati 経由で Web Clap を現在使用しています。Web Clap は拍手を送ったエントリ名を記録することができるので便利なのですが、個人的に良さそうだなあと思っているのはFC2ブログ 拍手みたいなヤツでした。

以前、Web 拍手ツールを探したときは、こういうタイプのが見つからなかったんですが、ついに見つけました。その名も GJ!

  1. ブログに特化したWeb拍手なので、どのエントリーに対する拍手なのかが判る
  2. 拍手数を拍手ボタン上に合成することで、拍手数がわかりやすい
  3. 拍手数をXMLで出力(ブログパーツなどに使えます)
  4. ボタングラフィック差し替え可能
  5. コメント閲覧画面(パスワード設定可能)完備

といった特徴があるように、ブログでの使用を前提にした設計になっているので、それなら WordPress に組み込んでやろうってことで、やってみました。配布ページでも WordPress 用のテンプレートの編集方法の解説ありますしね。

んが、ちょっとハマった部分といじった部分がありますので、備忘録的にメモしておきます。

PHP5 の fgetcsv の仕様でハマる

PHP5 の環境で、文字が化けたりするのは、fgetcsv の仕様で、OS
ロケールを関数が参照しているから、らしい。

fgetcsv 文字化け を見てみて、それならスクリプト内部でロケールを指定してやれば良いじゃない、といいことなので、fgetcsv関数を使用した場合の文字化けについて を参考に、スクリプトの先頭に setlocale(LC_ALL,'ja_JP.UTF-8'); と追加してやったらほぼ解消しました ((CentOS5.2 + PHP 5.2.6 の環境です。))

PHP5では動かない

現在のバージョンは PHP5 にも対応しています。

えー、推奨環境が PHP4 + GD なのですが、私の環境は PHP4 のサポート終了に伴い、PHP5 へアップデート済みなわけです。が、このスクリプトが内部で行っている XML の書き出し部分が PHP4 依存のコードを用いているので、そのままでは PHP5 で動かないことが分かりました。いつまで経ってもロックファイルが削除されないなあと思って、コードを追ったら見つけました。

domxml は PHP5では動作しないってなわけで、コードを書き換えるか、削除するか悩んでぐるぐるしていたところ、指向性メモ::2004-08-01::PHP4のDOMXML関数をPHP5のDOM関数に移植する 経由で見つけたのが、domxml-php4-to-php5.php。PHP4 の domxml を PHP5 の dom へ変換してくれる素敵スクリプトです。

これを、gj.php と同じ場所に保存して、

if (version_compare(PHP_VERSION,'5','>='))
 require_once('domxml-php4-to-php5.php');

をスクリプトの最初に書いてやれば、無事動作しました。

prototype.js はちょっと重いかなあ

や、WordPress 動かしてる時点で、重いってのは分かってるんですが。

Ajax 部分のフレームワークに prototype.js を使用していますが、98KB もあるスクリプトをまるまる使うのは多分無駄だと思ったので、その部分だけ抜き出して使えないかどうかを調べてみました。

Ajax なライブラリを使いまくって、自分のサイトが重くなってしまったら:Goodpic を見てみると、prototype.jsをAjaxのためだけに使いたいなら、pt.ajax.js や、moo.ajax とあるように、Ajax を使うだけなら、pt.ajax.js でも行けそうです。ということで、prototype.js の読み込みを止め、pt.ajax.js を読み込んで見たところ、問題なく動作。素敵。98KB を 9KB のファイルで代用できました。

ログが文字化けしてしまう

スクリプトが作成する、 gjcount.dat と gj.xml に書き込まれる文字列が化けてしまうなあ。2行目以降が追加されるときに化けてるみたい。原因が分からない。PHP5 で無理矢理動かしてるからかな? 詳細ログの方は化けてないから、実用上困ることはなさそうだけれど。

場当たり的な私家バージョン

文字化けの原因は良くわからないのですが、mb_convert_encoding で EUC-JP で保存してやると、良い感じに記録されているようなので、ページ名やコメント部分を EUC-JP で保存して、管理画面の文字コードも EUC-JP とした版を置いておきます。

  • [download#10]
    Update:2008/04/17