追記 2010 07/12
スクリプトの更新・配布を停止されているようです。
概要と注意
今回の記事は、PHPで作られたweb拍手スクリプト AL.WebClapを
- ブログ対応方式でWordpressに設置
- 管理画面でのページ名表示を、マルチバイト対応(要ごり押し改造)
することを目的としています。(実際にやったことは記事の続きで掲載)
よってこの記事は、進むにつれて「素人によるスクリプトごり押し改造のやり方」になってきます。いじり忘れたファイルがあると悲惨なことになりますし、逆にもっといい方法があるかもしれません。
基本的に素人の生兵法であることを踏まえ、そのリスクを覚悟の上でお試しください。
通常のweb拍手として設置する場合には、ごり押し改造は必要ありません。
ブログ用拍手をWordpressに設置する
テーマファイルのindex.phpやsingle.phpなどにある記事(エントリー)のループの中で、次のように記述します。
<a href=”(スクリプト設置フォルダまでのURL)/clap.php?day=<?php the_ID(); ?>&pname=<?php the_title(); ?>“> <img src=”(スクリプト設置フォルダ)/img.php?day=<?php the_ID(); ?>“></a>
<?php the_ID(); ?>が記事のIDの数字、<?php the_title(); ?>は記事名になります。
が、AL.WebClapはShift-JISで書かれているため、このままでは記事名は半角英数のみのモノ以外ほとんど表示されません。
そこで。
ページ名マルチバイト対応の為のUTF-8化ごり押し改造
準備するモノ
- AL.WebClap本体
- UTF-8 BOMなしのエンコードが扱えるテキストエディタ(sakuraエディタ・TeraPadなど)
- あれば、複数ファイルのエンコード変換できるツール (もちろんUTF-8対応・今回はKanjiTranslatorを使いました)
ごり押し改造のやり方
以下のファイルの文字エンコードを、変換ツールやテキストエディタでUTF-8(BOMなし)にする
- phpファイル全部
トップのフォルダに4つ1、confフォルダ2・testフォルダの中も全部。
testフォルダの中身は管理画面の各種メニューに関するモノなので、変換し忘れると管理画面が一部カオスに。 - logフォルダにある、log1.txt log2.txt log3.txt
ツールで変換できないことがあるので、テキストエディタで確実に。ここを怠ると、コメントをはじめログ類がカオスに。 - form.html(使う場合はlast.htmlも?)
admin.phpとform.htmlを開いて、(出力)HTMLの文字エンコード設定をUTF-8にする
具体的には、
- form.html(いじってなければ)の5行目
- admin.phpでは49行目
<meta http-equiv=”Content-Type” content=”text/html; charset=shift_jis“>
を
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8“>
に。
これを忘れると、管理画面やフォームで送られた情報がカ(ry
特にform.htmlをShift-JISのままにしておくと、logフォルダにあるログの文字エンコードが書き換えられてしまうのでゼッタイ忘れないように。
ごり押し書き換えは以上。あとはサーバーの設定に沿ってスクリプト・拍手タグを設置しましょう。
これで、ブログ形式の拍手設置でページ名が拾えるようになります。
ただし、管理画面の「タグ」ページに出てくるタグはaタグとimgタグそれぞれの属性(href= とか、src= とか)が引用符で囲われないので、このまま使うと半角スペースのある記事タイトルを正しく拾わず、尻切れトンボになってしまいます。
拍手タグ設置の時に引用符を補うとよいでしょう。
おまけと要望(届くかな……)
タグメニューのちょっとした改善
test/tag.phpの14行目、20行目、26行目、32行目、38行目、45行目にあるタグサンプル出力部分にほんの少し手を加えると、必要な要素が引用符でくくられた状態でタグが出力できます。
<tr><td class=”com_date”>タグ</td><td>
<input type=”text” name=”__” size=”50″ value=”<a href="<?php echo $_path_clap; ?>?day=【タグ】&pname=【ページ名】"><img src="<?php echo $_path_cimg; ?>?day=【タグ】"></a>” onFocus=”select()”>
<br />画像は各自用意したものを使用してください<br />
画像へのパス変更は<b>”基本設定”</b>から行えます<br />
【タグ】の部分を各ブログツールに合わせて変更してください</td></tr>
つっても、このように実体参照の"をはさむだけですが。
改善がすごく楽な上に、設置してから変に悩まなくていい3ので、是非作者さんに対応してほしいところです。
拍手のタグとか設置したらそれまでじゃん、そういじらないじゃん、って言われたらそうなんだけど……
リファラのない拍手を拍手数に計上しないようにはできないか?
こちらの方が深刻なんですよねー……
ブログ形式でこのスクリプトの拍手ボタンを設置してから半月くらい経ちます。
ふと、1日のある時間帯にどっと拍手があったような形跡があるんですが、これが生ログを見るとリファラがないログ。
- ウィルスバスターなどのフィッシング詐欺防止機能で先読みしている
- 検索ロボットのクロール
どうやらこのあたりに、いくつもの拍手ボタンを絨毯爆撃されている、と推測されます。
AL.WebClapにはNGホスト機能があるんですが、ブログ形式で設置された拍手回数には反映されず、結局、結構なノイズになっているのが現状です。
せっかく「どの記事/ページからボタンが押されたか」のリファラを取得しているので、「リファラのない拍手は拍手回数に計上しない」ようにはできないもんかなぁ。
AL.WebClapとの出会いと今回の改造のきっかけ
MFT5開催が近づき、「やっぱりweb拍手は必要だよね」ということで探していたところ、
- 挙動が本家web拍手に近く
- 解析画面がきれいで分かりやすい
- 通常のweb拍手にもブログ特化型拍手にもできて
- PHPである
AL.WebClapを見つけ、これはいい!とMFTサイトに普通のweb拍手として設置。
それから拙宅にはブログ用として設置しようとしたら、設置タグの解説ページには
【ページ名】(中略)
※ 英数字のみ (マルチバイトは使用できません)
「なに?!」(エクスデス先生のイベントボイス34で)
2バイト文字対応ならUTF-8→スクリプトをUTF-8対応にすれば日本語のページ名も表示できるはず!
……というきわめて短絡的な発想により、ごり押し改造を行う運びとなりました。
素人って、何するかわかんないから怖いよね………
- admin.php clap.php img.php txt.php の4つ [↩]
- confフォルダの中にあるphpファイルはちょっと自信ないけど、コンフィグとかなので、一応 [↩]
- ソースはもちろん、ページ名集計のログを見ながら悩みまくってたワレワレである [↩]
- たまねぎ&ティナ組との遭遇イベント [↩]