トップ «前の日記(2010年10月20日(Wed)) 最新 次の日記(2010年10月25日(Mon))» 編集 RSS feed

shinoのときどき日記


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;
?>
Tags: drupal

トップ «前の日記(2010年10月20日(Wed)) 最新 次の日記(2010年10月25日(Mon))» 編集 RSS feed
2000|03|
2007|01|03|04|05|06|10|12|
2008|01|02|03|04|05|06|07|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|11|12|
2015|01|02|04|05|09|10|12|
2016|01|03|04|05|08|
2017|01|02|04|05|06|07|08|09|10|
2018|05|06|
2019|08|12|
2020|01|03|04|
2021|01|12|
2022|01|09|11|
2023|01|