
Drupal5で特定のブロックをnodeにのみ表示する方法 3種
diary.haz.jpでは、nodeページを表示しているコンテンツに、「広告」と、「この記事と関連性の高い記事」ブロックを表示しているが、その方法に関する話。
By 投稿日:2010年 3月 15日
1.もっとも簡単(?)な方法
やり方
ブロック設定の「ページ個別の表示設定(Page specific visibility settings) - 特定ページでのブロック表示(Show block on specific pages):」で、「一覧にあるページでのみ表示します。(Show on only the listed pages.)」とし、「ページ一覧:」テキストボックスに「node/*」と入力する。
問題点
node/0/editのように、編集画面でもブロックが表示される。
2.node.tpl.phpに直接記載する
やり方
node.tpl.phpのブロックを出力したい部分に、ブロックの挿入コードを記載する。むしろブロック内の HTMLコードを直接記載する。
問題点
node.tpl.phpに記載するというのは、nodeの出力範囲に出力したい場合のみの話。サイドバーなど、ページの別部分に出力したい場合は、page.tpl.phpに条件を記載して記述する。
Drupalの編集機能を無視した手段であり、スマートでは無いかもしれない。管理し辛いかもしれない。
しかし、パフォーマンスの面では良好だったりする。
3.特定ページでのブロック表示に PHPコードを書き込む
やり方
ブロック設定の「ページ個別の表示設定(Page specific visibility settings) - 特定ページでのブロック表示(Show block on specific pages):」で、「次のPHPコードが TRUE を返す場合に表示します(PHPモード、上級者向け)。(Show if the following PHP code returns TRUE (PHP-mode, experts only).)」とし、「ページ一覧:」テキストボックスに次のコードを記述する。
<?php
return count(explode('/', $_GET['q'])) === 2 && arg(0) === 'node' && ctype_digit(arg(1)) ;
?>
この記事のトラックバックURL:
http://diary.haz.jp/trackback/144