icon: drupal

テンプレートファイル内の $termsで特定の分類用語(ボキャブラリー)のみ表示する

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>';
}

参考にしたページ

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

tDiaryからDrupalへ

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

Drupal5 5.12リリース

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

drupal5 抜粋 ティザー Teaser

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

Drupal 5.16 から 5.18へのアップデート

icon: drupal
Drupal 5.16 から 5.18へアップデート。 includeフォルダと、modulesフォルダをコピーした。 以上で完了。

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

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