2006-03-02 Thu
とても便利な「NP_TagEX」ですが、設定したタグで記事を絞り込む時のスキンは、メイン Blog が使用しているスキンの「メインの目次ページ」が選択されているようです。当サイトでは新着記事 10 件を「NP_ShowBlogs」を使用して表示していたのですが、「NP_ShowBlogsByDate」を使用するようになり、メインの目次ページも日記サイト風に日付で分けたいと考えました。現在は最新の日付の記事のみ本文を表示して、それ以外の最近 7 日間の記事はタイトルのみ表示するようにしています。しかし NP_ShowBlogsByDate にはタグ抽出機能がありません。いろいろ試行錯誤してどうにかタグ抽出時に専用スキンを適用させることができました。
細かい仕組みを理解しているわけではありませんが、今回いろいろ試行錯誤してみた結果、URI にスキン ID を直接打ち込むことで、強制的にそのスキンを適用させることができることがわかりました。Nucleus を通常運用していれば、個別アイテムページの URI は
http://www.test.com/?itemid=1
みたいになります。この「itemid」を「skinid」とするわけです。例えばある Blog がスキン ID 1 のスキンを標準のスキンにしているとします。その Blog に属する記事の ID が 1 だとすると、次の 2 つの URI でアクセスしても見た目は変わりません。
http://www.test.com/?itemid=1
http://www.test.com/?itemid=1&skinid=1
この skinid の値を変更すれば、Blog の設定を無視して任意のスキンを適用させることができそうですよね。というわけで、タグ抽出時の URI に「skinid=タグ抽出スキンの ID」を追加します。通常タグ抽出時の URI は次のどちらかです。
http://www.test.com/?tag=タグ名
http://www.test.com/tag/タグ名
この URI は、NP_TagEX の「creatTagLink」関数内 651 行目あたりで生成されています。
if ($CONF['URLMode'] == 'pathinfo') $link = $CONF['BlogURL'] . '/tag/' . $ready.$sep.$this->_rawencode($tag); else $link = $CONF['BlogURL'] . '?tag=' . $ready.$sep.$this->_rawencode($tag);
ここに、スキン ID 情報を書いてもいいと思いますが*1、今回は .htaccess の「RewriteRule」を利用しました。当サイトではタグ抽出時の URI は次のようになっています。
http://blog.heartfield-web.com/tag/タグ名
なので、.htaccess に次のように Rewrite ルールを加えました。
RewriteRule ^tag/(.*)$ index.php?skinid=14&tag=$1
適用させたいスキンの skinid の値は、スキンの編集ページの URI に含まれていますので確認してください。以上で、
http://blog.heartfield-web.com/tag/タグ名
にアクセスしてきた時、
http://blog.heartfield-web.com/index.php?skinid=14&tag=タグ名
を返すようになり、めでたくタグ抽出時のスキンをメインの目次ページと別にすることができました。
« Old 2006-03-02
NP_TimeStamp|修正日時を記録
2006-03-25 New »
Nucleus CMS Japan Wiki に登録