writebackプラグインについて #3
どこを改造したのかはっきりと覚えてないので、備忘録がてらにうちで使ってるwritebackの変更点をメモ。そのまんま持っていく人は結構いるみたいなので、その人たちへの解説も兼ねて。順不同。
- __mode=rssの実装
- あんまり気にしないでください(w。まーあって困るもんじゃないので、半分シャレで実装してます。
- メールで通知
- コメントやTrackBackがあった時、メールで通知するように。sendmail利用。スパム対策などの意味も含め、User AgentやRemote Hostなんかも併せて通知するようになってます。
- サニタイズ処理
- HTMLタグの削除やエスケープ、改行の削除などなど。そのついでに、URLやメール・アドレスに自動的にリンクを張ったり、改行をbr要素に変換する処理をしてます。
- 文字コード統一処理
- 思いっきりハードコーディングで、UTF-8に無理やり変換してます。この処理は投稿時のみで、表示時はそのまま。
- 長すぎるTrackBackの切り詰め
- TrackBackの場合は、妙に長くて困ることが結構あるので、*表示の時に*256文字に切り詰めてます(データ・ファイルには完全な形で残るということです)。コメントは切り詰めてません。
- クッキー機能の追加
- デフォルトで実装されているcokkieプラグインとの連携がうまく出来なかったので、ガリガリと実装。強制とかいうヒドイ仕様。
- コメントとTrackBackを切り分け
- 別のフレーバー(comment.flavourとtrackback.flavourで独自に作れます)を適用したり、いろいろ処理してます。story.flavourには、$writeback::commentsと$writeback::trackbacksと記述すると、それぞれが表示されるようになってます。混ざってるのはわかりにくいかなぁと。ここらへんの絡みで、titleやnameが空の場合はNo TitlteとかAnonymousなどで埋めるようにもしてます。
- nameかblog_nameに自動リンク
- デフォルトだとメール・アドレスの場合は、mailto:つけなくちゃいけなかったり、空の時に嫌なa要素作ってしまうので、プラグイン側でurlパラメータの内容を解析(というほどのものではないですが)して、自動リンクを張るようにしてます。ゆえに$writeback::nameと$writeback::blog_nameがデフォルトとは違い、a要素コミで出力されます(このままで良い場合は$writeback::urlなどを書く必要が無いということ)。
- コメント数とTrackBack数
- $writeback::cm_countと$writeback::tb_countで、それぞれの数を表示できます。個人的な趣味で、これらを利用して$writeback::cm_statusと$writeback::tb_statusという文字列(No Commentとか1 TrackBackとか10 TrackBacksとかになる)も表示できるようになってたり。
- コメント投稿とTrackBack受信時間
- ま、やっぱりいつのものかは表示した方が良さげなので。comment.flavourとtrackback.flavourには、$writeback::dateとか書くことになります。
具体的なものは、こんなもんかな。これ以外にも、処理的な都合からいろいろ変えてたりもします(writebackのデータ・ファイルに混入する半角スペースの削除とか)。あと、このサイト専用な処理が入ってる(put_formsと連携させること前提な処理とか)ので、流用する場合はかなり気をつけたほうがいいです。あんまりまるで誰かに使ってもらうことは意識してません。
誰か、これらの機能を実装したwriteback互換のプラグイン作らないかな。僕ですか? 僕はもうこれでいいのでメンドウです。