TrackbackURLのFancyURL化(Nucleus)


NucleusのTrackbackプラグインで生成されるTrackbackURLは、標準のままではhttp://example.com/nucleus/action.php?action=plugin&name=TrackBack&tb_id=308のようになります。
この長いURLを短くして、FancyURLの形式にする方法です。

現在のNucleusで最も簡単な方法は、NP_CustomURLを導入することでしょう。
NucleusWiki NP_CustomURLのページ http://japan.nucleuscms.org/wiki/plugins:customurl

この記事では、NP_CustomURLを使用せず、FancyURLの方法を使用してTrackbackURLを短縮する方法について説明します。
なお、この方法はこちら(Trackback URLをすっきり短くする – Nucleusだとか)の記事を参考にして作成しました。


1.まずはNP_Trackbackプラグインを導入します。
2.Trackbackを受け付ける短縮名のファイルを作成します。
ファイル名”trackback”を用意。拡張子なしです。(trackback.txtで作成して拡張子を削除剃る方法でもOK)

ファイルを編集し、以下のように記述します。

<?php
$CONF = array();
include('./config.php');    // common functions
 
$data = explode("/",serverVar('PATH_INFO'));
$id = intval($data[1]);
 
$pluginName = 'TrackBack';
// only continue when the plugin is really installed
if (!$manager->pluginInstalled('NP_' . $pluginName))
    exit;
 
$plugin =& $manager->getPlugin('NP_' . $pluginName);
if (!$plugin) exit;
 
if ($id) $_REQUEST['tb_id'] = $id;
 
$plugin->handlePingXML();
?>



3.このtrackbackファイルを、nucleusを設置したフォルダ(config.phpを同じフォルダ)に置きます。
trackbackファイルをnucleusを設置したフォルダ以外に置くことも出来ます。
その場合は、trackbackファイルの3行目のconfig.phpファイルのパス指定を修正してください。
4.さらにそのディレクトリの.htaccessに次の3行を追加。

<FilesMatch "^trackback$">
    ForceType application/x-httpd-php
</FilesMatch>



5.さらに、記事中に表示されるTrackbackURLを修正するため、NP_Trackback.phpを修正します。
getTrackBackUrl関数を検索し、以下のように修正します。

function getTrackBackUrl($itemid) {
    global $CONF;
    //hack
    $baseurl = preg_replace('{^(.+)/action.php}', '$1/', $CONF['ActionURL']);
    return $baseurl.'trackback/'.$itemid;
}



6.ローカルトラックバックを使用する場合、NP_Trackback.phpのローカルトラックバック受付処理の修正も行います。
NP_Trackback.phpのfunction handleLocalPing関数の中で、トラックバック先のitemidを取り出しているところを変更します。

preg_match("/^.+tb_id=([0-9]+)$/",$ping_url,$idnum);


と記述されている行を検索し、以下のように変更します。

preg_match("/^.+trackback\/([0-9]+)$/",$ping_url,$idnum);


コメントをどうぞ