一覧にあるページでのみ表示します。

Drupal5で特定のブロックをnodeにのみ表示する方法 3種

diary.haz.jpでは、nodeページを表示しているコンテンツに、「広告」と、「この記事と関連性の高い記事」ブロックを表示しているが、その方法に関する話。

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コードを書き込む

やり方

PHPコードが TRUE を返す場合に表示します

ブロック設定の「ページ個別の表示設定(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