NP_TagEX|タグ抽出時にスキン変更

NP_TagEX|タグ抽出時にスキン変更

Author : pushman|Nucleus|2006-03-02 Thu 22:47

とても便利な「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=タグ名

を返すようになり、めでたくタグ抽出時のスキンをメインの目次ページと別にすることができました。


  • *1:例えば「$link = $CONF['BlogURL'] . '?skinid=1&tag=' . $ready.$sep.$this->_rawencode($tag);」てな感じでしょうか。

Tag(s): NP_TagEX

Comment Form (policy)

(メールアドレスは非公開です)

Others
Newest 5 Items

NP_GoogleMapsにオリジナルマーカーを表示

BLOG.phpのPHP Warning

CPIでNucleus(UTF-8)

NP_znItemFieldEX|「本日」の条件判断を修正

NP_OnlyImg|高さを有効に

Nucleus CMS: Pure Publishing