如何透過Vocabulary ID控制區塊的顯示與否?

Q. 假設有這麼一個 taxonomy/term/11 的頁面,這個 node 會列出與 term/11 相關的 teaser,那麼如何控制這個 node 的 block 顯示與否?

A. 利用 php 在 block 的控制項目 > 特定頁面的顯示設定 來達成:

<?php
$match
= FALSE;
$desired_vocab = 3; //這個數字是根據想要的分類Vocabulary ID而定
if (arg(1) == 'term' && is_numeric(arg(2))) {
 
$vid = null;
 
$tid = arg(2);
 
$result = db_query("SELECT vid FROM {term_data} WHERE tid = %d", $tid);
  while (
$term = db_fetch_object($result)) {
   
$vid = $term->vid;
  }
  if (
$vid == $desired_vocab) {
   
$match = TRUE;
  }
}
return
$match;
?>

jimmy 的照片

Re: 如何透過Vocabulary ID控制區塊的顯示與否?

把code改短一點
有些變數可以不用
db_result()當只需要第一個結果時很好用

<?php
$desired_vocab
= 3; //這個數字是根據想要的分類Vocabulary ID而定
if (arg(1) == 'term' && is_numeric(arg(2))) {
 
$tid = arg(2);
 
$result = db_query("SELECT vid FROM {term_data} WHERE tid = %d", $tid);
 
$vid = db_result($result);
  if (
$vid == $desired_vocab) {
    return
TRUE;
  }
}
return
FALSE;
?>