2006-02-17 Fri
当サイトではトラックバックに、hsur さんが配付されている、「NP_TrackBack v2.01jp2 c2」を利用させていただいています。リンク無しトラックバックを一時保留にしてくれたり、記事中のリンク先を調べて自動でトラックバック URI を抽出してくれたりと、便利機能満載です。
この「自動トラックバック URI 抽出機能」ですが、相手先に「Trackback Auto-Discovery」という RDF が記述されていないと動きません。自分のサイトにその RDF を記述する場合は、任意の場所*1に「<%TrackBack(code)%>」と書くだけです。が、まれに The W3C Markup Validation Service で検証すると、エラーが発生します。調べてみると「dc:description」の最後で文字化けが発生していました。
というわけで、以下その修正メモ。
「insertCode」関数内の以下の部分で「dc:description」の内容を生成しているようです。
$desc = $this->_cut_string($desc, 200);
「_cut_string」関数を見てみましたがちんぷんかんぷんなので、以下のように修正しました。
// $desc = $this->_cut_string($desc, 200);
$desc = preg_replace('/[\r\n\t\040]+/', ' ', $desc);
$desc = shorten($desc, 250, '...');
$date = $item['itime'];
まず改行を半角スペースに置換して、250 文字にまるめています。って自分で考えたように書いてますが、dj k!ng さんの「NP_Header」の処理を参考に、というかそのまんま流用させてもらいました。お世話になりっぱなしですみません。
順番が前後しますが「dc:date」の日付が常にそのページが開かれた日時であるのも気持ち悪かったので、記事投稿時間を表示するために「$date = $item['itime'];」も追加しています。表示するためには RDF の出力部分の「dc:date」を以下のように修正します。
dc:date="<?php echo $date; ?>" />
なんて修正をした後で気付いたのですが、「トラックバックの技術仕様」によると「dc:description」「dc:date」ともに必須項目ではないんですよね。考えてみると、トラックバック先の URI を取得できればいいわけで、確かに必要ない気もしてきますね。まあで多くの Blog と形式を統一していた方が後々楽できるかもしれません。
ところで hsur さんの記事から Trackbak URI が抽出されませんね。ちゃんとソースに RDF はあるんですがなんでだろう?
« Old 2006-01-21
NP_Amazon|Bloglines 対策
2006-02-19 New »
NP_CommentParagraph|ちょいバージョンアップ
ツッコミありがとうございます。
前々から自分のページのAuto-Discoveryが効かないのはわかっていたのですが、これを機にページを見直してみたところ、RDFが2つあったのが悪かったようです。無事解決できました。
2006-02-18 Sat 17:23
hsur さん
素晴らしいプラグインの開発おつかれさまです。いつも大変お世話になってます。あらためまして、ありがとうございます。
お役に立てて嬉しいです。今後も一方的にお世話になりそうですが、よろしくお願いします。
2006-02-18 Sat 19:54