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

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)) ;
?>

この記事と関連性の高い記事

tDiaryからDrupalへ

icon: drupal
ここのシステムをtDiaryからDrupalへ変更しました。 既存記事の移行は手動でやりました。コメント無くなりましたが、すいません。 pythonが好きなのでDjangoに……

Drupal5で守りたい事

icon: drupal
Drupal5で守りたい事。書きかけ。

drupal5 抜粋 ティザー Teaser

icon: drupal
「管理セクション > コンテンツの管理投稿の設定」で設定 http://www.[yoursite].com/admin/content/node-settings 明示的に指定する場合は、本文(Body)に&……

Drupal5 5.12リリース

icon: drupal
Drupal 5が 5.11にアップデートされたばかりだが、早速 5.12にアップデートされた。 リリースノートによると、クロスサイトスクリプティングによる攻撃に対す……

similarterms.module インデントがおかしい

icon: drupal
similarterms.moduleが表示する「擬似するコンテンツ」だけが、左サイドの他のメニューとインデントが一致しない。ulタグにmenuクラスが指定されていないのが……