2009-02-23

JS-Kit+bloggerでtrackback機能を無理やり作ってみる

※ 2009/02/23 明らかなミスや微妙な表現を少し改訂

[背景]
何やらhaloscanという会社がJS-kitに買収されて, 今までregisterさえすればbloggerでも簡単にtrackback機能を実装できたのに, registerが出来なくなって皆四苦八苦している模様。そこで, 1日費やして, 何とかjs-kitだけでtrackback機能を実装してみようと頑張ってみました。

正直javascriptなんて全く触れたことないけど, カンと気合で出来るところまでやってみました。以下, その結果発表。

※注意
環境チェックとかコードのチェックとかを行っていないので, この通りにやっても動かないかもしれません.

---------------------------------------
[結果]
trackbackのpingが送られたら, それを自動で確認するところまではできました。キャプチャ画像を使って説明すると,

trackbackが送られたら,



とりあえず自動で認識してくれる.



[大まかな開発方針]
JS-kitのコメント機能なんて入らないけど, trackback機能は欲しい. だから, JS-kitのtrackback機能が実装している部分をうまくコピペして繋ぎ合わせていけばできるんじゃないか? という信念に基づいてひたすらコードを解析&改造。


[事前準備]
1. JS-kitのYour sites画面においてtrackback関連のチェックボックスをすべてチェックしておきます.

2. 手頃なトラックバック練習場を使って, 手動トラックバック送信システムの使い方を自習します。(作者のNI-Lab.様に感謝)
http://www.nilab.info/lab/trackback.html

3. JS-Kit Admin Guide (document)をひたすら読みこみます.特に, "trackback"について記されている章(P.40)は精読します.
http://js-kit.com/support/js-kit-admin-guide.pdf

※ documentのtrackback/pingbackの章に書かれている色文字の部分について,
your.blog.com = yasu1987.blogspot.com
path = data:post.id
として置換することにします。


[具体的な実装方法]
1. bloggerのedit html画面において, 以下の部分を探す。

<?xml:namespace prefix = b /><b:include name="postQuickEdit" data="post"></b:include>
</span><p></p>
/*** ココ ***/
<p class="post-footer-line post-footer-line-2"><span class="post-labels">

2. 上述の「ココ」の部分に以下のコードをコピペ
(※ yasu1987.blogspot.comの部分には自分のドメインを入力)

<rdf:RDF xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:trackback='http://madskills.com/public/xml/rss/module/trackback/'>

<rdf:Description expr:dc:identifier='&quot;http://yasu1987.blogspot.com/&quot;+data:post.id' expr:dc:title='data:post.id' expr:rdf:about='&quot;http://yasu1987.blogspot.com/&quot;+data:post.id' expr:trackback:ping='&quot;http://js-kit.com/trackback/yasu1987.blogspot.com/&quot;+data:post.id'/>
</rdf:RDF>

<link expr:href='&quot;http://js-kit.com/rpcxml/yasu1987.blogspot.com/&quot;+data:post.id' rel='pingback'/>

<div expr:permalink='data:post.id'/>

<div>Trackback URL of this post is <a expr:href='&quot;http://js-kit.com/trackback/yasu1987.blogspot.com/&quot;+data:post.id'>HERE</a></div>


3. 無事にセーブできたら, 手動トラックバック送信システムを使って, "HERE"のリンク先URLに対してpingを送信してみます。
※ entry URLに存在しないURLを入力すると, NO URLというerrorが起こります。




4. JS-Kitのmoderation画面でpingが来たことを確認.

上図を見ると, pingが送信されたことを自動的に検知できたことがわかります。これで, 少なくともtrackbackしたい人がいるんだー, ということはわかるようになりました。ちなみに, 現在のこのブログは, このままの状態で放置しています。

[今回出来なかったこと&わかっていること]

・trackbackのpingが来たことは自動で検知できたけれど, それを表示する方法が分からない.
・同じentry URLからpingを送ると, 既に登録されているというerrorが起こる。つまり, どこかしらにちゃんとtrackbackのpingの履歴は保存されている. その保存先がわかればなんとかなるかも。


うー, 眠いので, 今日はここまでにします。個人的にはJS-Kitさんかgoogleさんのいずれかがtrackback機能をしっかり実装してくれることを切望。ではでは。もう寝ます。

5 件のコメント:

さむ さんのコメント...

こんばんは。あ~、post.idを使うんですね!私もなんとかjs-kitでtrackbackを付けられないか試行錯誤して結局JavascriptでTrackbackURLを表示するだけしかできませんでした(pingbackとかできてない)。

JS-KITのトラックバックは私が試した限りだとコメント欄(しかもjs-kitじゃない純正の)に名前がTrackbackでコメントが残されました。
http://kyoumotanoshi.blogspot.com/2009/02/blog-post_15.html
でも、動くような動かないような微妙な状態。よく分かりません。

yasulab さんのコメント...

"さむ"さん:

コメントありがとうございます。おー、凄い!トラックバックらしきコメントがありますね!

もしよければ、どうやったらコメント欄にトラックバックの結果が反映されたのか教えていただけないでしょうか?

一応私の場合は、下記URLのtrackbackについて記されている章(P.36)をそのまま実装したつもりなのですが、コメント欄に反応がありませんorz

http://js-kit.com/support/js-kit-admin-guide.pdf

さむ さんのコメント...

http://js-kit.com/moderate/ で来たトラックバックをApprove message押しただけですが、、、今試してみると上手くいかなかったです・・。
JS-KITのコメントを使っていないとダメとかあるのかなぁ。謎ですね

さむ さんのコメント...

post.idでいいのかと思ったのですがpath部分はpermalinkなので「http://js-kit.com/trackback/yasu1987.blogspot.com/2009/02/js-kitbloggertrackback.html」 じゃないと行けないような気がしますがどうなんでしょう。

yasulab さんのコメント...

コメントありがとうございます。

確かに投稿先のURLの方が良さそうですね。その場合はpost.idではなく、post.urlとすればURLを取得できるはずです。しかし、この場合はtrackbackの送信先URLが以下のようになってしまうので注意する必要があります。

http://js-kit.com/trackback/http://yasu1987.blogspot.com/2009/02/js-kitbloggertrackback.html

具体的には、javascriptで"http://"の部分を消すようにデータを整形してあげれば簡単に解決すると思うのですが、幾分今は他にやりたいことがあるので今すぐ実装できないのが現状です。申し訳ないですorz。