2005-11-25 Fri
dj k!ng さん作の、個別アイテムページの URI を変更するプラグイン「NP_Permalink」導入のまとめ。
.htaccess へ以下を追記
RewriteRule ^nucleus/([-a-zA-Z0-9_]+)\.html$ index.php?itemid=$1
「^nucleus」部分は、対応するカテゴリー名。サイトの直下に指定した方が、後の修正が楽。
すでに
RewriteRule ^item_([0-9]+).html+ index.php?catid=$1
を記述している場合はこれを削除*1し「Redirect permanent」を利用する。
記述例
Redirect permanent /item_1.html http://blog.heartfield-web.com/column/heartfield_again.html
Fancy URI の時も似たような修正が必要っぽい。通常使用だと別に必要なさそう。
コメント送信後、戻り先の URI がおかしくなるので、これを修正。「nucleus/forms」内の
commentform-loggedin.template
commentform-notloggedin.template
の
<%formdata(destinationurl)%>
を
./<%Permalink(name)%>.html
と修正。
トラックバックを打った先へ送信する URI は「nucleus/libs/globalfunctions.php」内の「function createItemLink」内で行っているので、ここに以下を追記。
function createItemLink($itemid, $extra = '') {
global $CONF;
//From NP_Permalink
$result = sql_query('SELECT name FROM ' . sql_table('plugin_permalink') . ' WHERE (itemid = ' . intval($itemid) . ')');
if (mysql_num_rows($result) > 0) {
$object = mysql_fetch_object($result);
$name = $object->name;
}
//From NP_Permalink
// From NP_CatDesc
$query = "SELECT cname " . "FROM ".sql_table('item').", ".sql_table('category')." " . "WHERE icat=catid " . "AND inumber=$itemid";
$results = mysql_query($query);
$row = mysql_fetch_assoc($results);
$cname = $row['cname'];
// From NP_CatDesc
if ($CONF['URLMode'] == 'pathinfo')
$link = $CONF['ItemURL'] . '/' . $cname . '/' . $name . '.html';
else
$link = $CONF['ItemURL'] . '?itemid=' . $itemid;
return addLinkParams($link, $extra);
}
個別アイテムページを、各カテゴリーごとのディレクトリに分けていない場合「From NP_CatDesc」内は不要。なので、前述したようにカテゴリーごとに分けない方が楽。
« Old 2005-11-22
NP_Permalink導入時のコメント
2005-12-09 New »
最初から「ドラフトに追加」にチェック