Nucleusの検索で記事ごとにテンプレートを制御する

Nucleusは、複数ブログを設置できる便利なCMSである。そして、ブログごとにデザインの枠組みであるスキンやテンプレートを差し替えられるので、目的の違うブログがある場合、それぞれに応じた見せ方をすることができる。

また、各ブログで「常に検索対象にする」というオプションを使うと、複数ブログにまたがる検索が可能になるので、サイトをすべてNucleusで作ればサイト内検索としても使えるという、これもまた便利な機能である。

しかし、ブログごとにテンプレートを変え、かつ「常に検索対象にする」のオプションを使おうとすると、困ったことが生じる。何かというと、検索結果はブログ1、ブログ2、ブログ3・・・の記事が混在しているのに、テンプレートは検索画面が開いていたときのブログのものが使われてしまう。ブログ1を表示していたときに検索をかけた結果がブログ3のものだったりすつと、ブログ1のテンプレートでブログ3の記事が表示されてしまうのだ。
それでは、<%if%>を使って、ブログごとに表示を変えるように制御してみてはどうだろう?ところが実際に、テンプレート内に

<%if(blogid,1)%>ここはブログ1の記事の場合のみ記述される<%endif%>

と書いてみると、<%if(blogid,1)%>なんていう文字列がそのまま表示されてしまう。<%if%>はスキン変数だが、表示の制御はスキンではなくテンプレートに書くことになるので、<%if%>自体が動かないのである。

しかし、Nucleusには数多くのプラグインを作っている人たちがいて、ちゃんとテンプレート内で<%if%>が使えるようにするプラグインNP_ifなるものが存在する。これは便利!と、さっそくインストールして、先と同じように記述する。そうすると、今度は<%if(blogid,1)%>がそのまま表示されることはないものの、思ったように動いてないみたい。
実はこのプラグインは、記事ごとにどのブログかを評価するわけではなく、あくまでも検索したときにどのブログだったかを判定するだけなのだ。だから、ブログ1から検索して結果がブログ3が表示される場合、ブログ1を表示しているものとして<%if%>が動いているのである。

これは困った・・・といろいろ探していると、どうやらNP_STIFなるプラグインがあって、これなら希望した動作をしてくれそう。

ってなわけで、さっそくインストールをしてみる。このプラグインは、ただインストールしただけでは動かない。リンク先(英語)の記事にしたがってコアの改造が必要のようだ。それも、最新版であるNucleus 3.3の場合は、この記事にあるnucleus/libs/BLOG.phpの改造ではなく、こちらの記事に記述がある通りnucleus/libs/ITEMACTIONS.phpの改造となる。

改造方法は、以下の通り。

20行目あたり(赤字部分を取る)

class ITEMACTIONS extends BaseActions {
   ↓
class ITEMACTIONS extends Actions {


101行目あたり(赤字部分を取る:つまり、コメントアウトをはずす)

'relevance'/*,
'if',
'else',
'endif',
'elseif',
'ifnot',
'elseifnot'*/
   ↓
'relevance',
'if',
'else',
'endif',
'elseif',
'ifnot',
'elseifnot'

あとは、NP_STIFの使い方に注意しないと、うまく動かない。
各記事の最初に<%STIF%>と記述しないと、記事ごとにどのブログか判定してくれない。<%STIF%>の記述より後の部分について、その記事に固有の変数が使われるので、テンプレートの、記事のヘッダーの最初にでも記述しておくのがよいと思われる。

ほかの使い方としては、カテゴリーごとにテンプレートを変えたいとか、携帯電話でブログを表示するプラグインNP_MobileWithSinglePageを使うときの表示の切り替えとか。
もっとも、NP_MobileWithSinglePageの場合、パソコン表示用のスキンに連動して携帯表示用のスキンも変えてくれる機能があるのね。
2007年12月30日(日)17:55:36
カテゴリー:Why Is the Sky Blue? » Nucleus
タグ:

コメント

この記事のコメントはありません。









トラックバック

このエントリにトラックバックはありません
このトラックバックURLを使ってこの記事にトラックバックを送ることができます。 もしあなたのブログがトラックバック送信に対応していない場合にはこちらのフォームからトラックバックを送信することができます。.

サイト内検索


カレンダー

2010-09
  12345
6789101112
13141516171819
20212223242526
27282930   

ログイン






powered by

  • Powered by Nucleus CMS