テンプレートファイル内の $termsで特定の分類用語(ボキャブラリー)のみ表示する
Table of contents
Drupalのテンプレートファイル(.tpl.php)の$terms変数は、ノードに関連付けされたtermを全て保持しているが、特定の分類用語と関連付けされているtermのみを表示させたい場合。
例えば、ノードタイプ「ページ」には、「性別」分類用語と、「身長」分類用語が関連付けされている場合、node.tpl.php内の $termsは、そのノードに関連付けされた両方の分類用語の値を保持してくるのだが、「性別」分類用語だけを表示したい場合の処理。
方法1.Taxonomy hideモジュールを使用する。
Taxonomy hideモジュールを導入するのが、もっとも簡単な方法かと思われる。「Taxonomy hide」の管理メニューから表示したくない分類用語にチェックを入れるだけだ。
ただし、この方法は特定の分類用語を非表示にする方法であり、特定の分類用語を取り出す方法では無い。つまり、このプラグインを使用した時の問題は、新しい用語を追加した場合に defaultで表示となってしまい、毎回「非表示」に設定しなおさなければならない。
したがって、次にdefaultで非表示にできる方法を記載する。
方法2.node.tpl.phpで対応する方法。
以下は、分類用語ID(vid) 1, 2のみを表示するコード。既存の $termsを出力しているところと書き換える。
$vterms = array();
foreach(array( 1, 2) as $lvid) {
$lterms = taxonomy_node_get_terms_by_vocabulary($node->nid, $lvid);
if($lterms) {
foreach($lterms as $key => $lterm) {
$vterms['taxonomy_term_'. $lterm->tid] = array(
'title' => $lterm->name,
'href' => taxonomy_term_path($lterm),
'attributes' => array(
'rel' => 'tag',
'title' => strip_tags($lterm->description),
),
);
}
}
}
if($vterms) {
print '<div class="terms">';
print theme('links', $vterms, array('class' => 'links inline')) ;
print '</div>';
}