NP_CustomURL の展望(みたいなもの) カスタマイズしたURLでローカルトラックバック
Sep 13
う~ん、いつもの事ながらエントリのタイトルには苦労します
長くなりすぎないように、それでいてちゃんと意味が通って誤解を受けないようにするのは難しいもんです
コピーライターにはなれないなぁ…

で、本題
今まで書くのをすっかり忘れてたんですが、NP_TrackBack の変数「<%TrackBack(url)%>」を変更するカスタマイズです
せっかく URL をカスタマイズしても、トラックバックの URL は
http //example.jp/?action=plugin&name=TrackBack&tb_id=123
のまま、もしくは NP_cles() さんの所に書いてあるやり方だと、
http //example.jp/item/123.trackback
とか
http //example.jp/item_123.html.trackback
とか(下の URL はちょっとわけ解らなくなってますが)になってると思います
ほとんどの方が標準のトラックバック URL で運用されていると思いますが、これを
http //example.jp/trackback/item_123.html
または
http //example.jp/item_123.trackback
に変更する方法です
そのうち NP_CustomURL に、トラックバック URL 生成のコードを追加しようと思いますが、今回は NP_TrackBack v2.0.3jp4 の URL 生成部分を書き換える方法を紹介します

ちょっと長くなるんで続きに...

06/09/16 18:55 オプションで「カスタマイズしたURLを使わない」にしている時と、NP_CustomURL がインストールされていない時に、標準のトラックバックURLが返されるようにちょこっと書き換えました
まずは NP_TrackBack v2.0.3jp4 をエディタで開き、631行目からの
		function getTrackBackUrl($itemid) {
global $CONF, $manager;
return $CONF['ActionURL'] . '?action=plugin&name=TrackBack&tb_id='.$itemid;
}
のブロックを探します
ここを。「/trackback/item_123.html」方式の場合は
		function getTrackBackUrl($itemid) {
global $CONF, $manager;
// return $CONF['ActionURL'] . '?action=plugin&name=TrackBack&tb_id='.$itemid;
// add for NP_CustomURL
if ($manager->pluginInstalled('NP_CustomURL')) {
$plugin =& $manager->getPlugin('NP_CustomURL');
if ($plugin->getBlogOption(getBlogIDFromItemID($itemid), 'use_customurl') == 'yes') {
$que = 'SELECT obj_name as result FROM %s WHERE obj_param = "item" AND obj_id = %d';
$itempath = quickQuery(sprintf($que, sql_table('plug_customurl'), $itemid));
$uri = $CONF['BlogURL'] . '/trackback/' . $itempath;
} else {
$uri = $CONF['ActionURL'] . '?action=plugin&name=TrackBack&tb_id='.$itemid;
}
} else {
$uri = $CONF['ActionURL'] . '?action=plugin&name=TrackBack&tb_id='.$itemid;
}
if(strstr ($uri, '//')){ $link = preg_replace("/([^:])\/\//", "$1/", $link);}
return $uri;
// for NP_CustomURL end
}
に、「/item_123.trackback」にする場合は
		function getTrackBackUrl($itemid) {
global $CONF, $manager;
// return $CONF['ActionURL'] . '?action=plugin&name=TrackBack&tb_id='.$itemid;
// add for NP_CustomURL
if ($manager->pluginInstalled('NP_CustomURL')) {
$plugin =& $manager->getPlugin('NP_CustomURL');
if ($plugin->getBlogOption(getBlogIDFromItemID($itemid), 'use_customurl') == 'yes') {
$que = 'SELECT obj_name as result FROM %s WHERE obj_param = "item" AND obj_id = %d';
$itempath = quickQuery(sprintf($que, sql_table('plug_customurl'), $itemid));
$itempath = substr($itempath, 0, -5);
$uri = $CONF['BlogURL'] . $itempath . '.trackback';
} else {
$uri = $CONF['ActionURL'] . '?action=plugin&name=TrackBack&tb_id='.$itemid;
}
} else {
$uri = $CONF['ActionURL'] . '?action=plugin&name=TrackBack&tb_id='.$itemid;
}
if(strstr ($uri, '//')){ $link = preg_replace("/([^:])\/\//", "$1/", $link);}
return $uri;
// for NP_CustomURL end
}
に書き換えます
これで完了
「<%TrackBack(url)%>」と書いたところの表記が変わってるはずです
ちなみにここで改造した URL で受け取ったトラックバックは、FancyURL で必要だった「trackback」ファイルを取り込んだNP_CustomURL で URL を解析してからトラックバックIDを NP_TrackBack に渡してます

解析機能は初期バージョンから付けてたのに、改造方法どこにも書いてなかった orz
ゴメンナサイ

2 Responses to “ トラックバックURLをNP_CustomURLの表示にするカスタマイズ ”

  1. 藤咲 Says:
    トラックバックをしようと思ったんですが、管理履歴に以下のエラーが出ます。
    TrackBack Error:An error occurred: fatal error. (http://shizuki.kinezumi.net...)
    NP_TrackBack v2.0.3jp3です。(jp4は帰ってからアップデートして試してみます)
  2. 藤咲 Says:
    って、今見たらトラックバックされてますね…。すみません(><

Leave a Reply

OpenID を使ってログインすることができます。

Identity URL:



Web Services by Yahoo! JAPAN

Trackbackの短縮化失敗? @ 備忘録とかもろもろ
突然思い出したように記事更新するのはやめましょう(笑 で、MagicalURLでTrackBackURLの短縮化(TrackBackURLのMagical化?)にて、TrackbackのMagicalURL風短縮を行ったんですが、これが一部うまくいっていな...
2006/09/13 17:05

この記事のトラックバックURL
http://shizuki.kinezumi.net/item_301.trackback(右クリックで'ショートカットの保存')
トラックバックするにはこの記事へのリンクhttp://shizuki.kinezumi.net/item_301.htmlが必要です
ローカルトラックバック