2010年10月21日(Thu)
■ drupalでブロックを特定カテゴリのノードに表示する。
ウェブ上にあるサンプル*1*2を元に、drupalで特定のカテゴリにあるノード(エントリ)に、ブロックを表示させようとしたところ、わたしの環境(drupal 6.19)ではnode_loadしないとうまく動作しなかったので、node_load版のサンプルを置いておきます。
このコードは、「ホーム > 管理セクション > サイトの構築 > ブロック」で「ページ固有の表示設定/特定ページでのブロック表示:」を「以下のPHPコードが TRUE を返したら表示する(PHPモード - PHPに精通した方専用)」にし、その下のtextareaに配置しました。
<?php // 表示させたいカテゴリのID(タームID 1を任意の値に置き換える) $term_id = 1; // taxonomy/term/id のページで表示したいなら if ((arg(0) == 'taxonomy') && (arg(1) == 'term') && (arg(2) == $term_id)) { return true; } // ノードのページで表示したいなら if ((arg(0) == 'node') && is_numeric(arg(1))) { $nid = arg(1); $node = node_load(array('nid' => $nid)); $terms = taxonomy_node_get_terms($node); if( $terms ){ foreach ($terms as $term) { if ($term->tid == $term_id) { return true; } } } } return false; ?>