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);