NP_TrackBack|Trackback Auto-Discovery 修正
NP_TrackBack|Trackback Auto-Discovery 修正
- Author : pushman|Nucleus|2006-02-17 Fri 12:03
-
当サイトではトラックバックに、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 はあるんですがなんでだろう?
- *1これはいろいろ調べてみたのですが、どこが適切なのかわかりませんでした。<head>〜</head>でも<body>〜</body>でも動作に違いはありません。結局 (x)html のコメントとして埋め込んでいるのでそうなるんだと思います。
-
-
Tag(s): NP_TrackBack
- [Nucleus] Next & Previous
Comments
- Posted by hsur|2006-02-18 Sat 17:23
-
ところで hsur さんの記事から Trackbak URI が抽出されま
せんね。ちゃんとソースに RDF はあるんですがなんでだろう?ツッコミありがとうございます。
前々から自分のページのAuto-Discoveryが効かないのはわかっていたのですが、これを機にページを見直してみたところ、RDFが2つあったのが悪かったようです。無事解決できました。
- Posted by pushman|2006-02-18 Sat 19:54
-
hsur さん
素晴らしいプラグインの開発おつかれさまです。いつも大変お世話になってます。あらためまして、ありがとうございます。RDFが2つあったのが悪かったようです。無事解決できました。
お役に立てて嬉しいです。今後も一方的にお世話になりそうですが、よろしくお願いします。


