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;
?>
[ツッコミを入れる]
