您在這裡

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

Hipfox's 的頭像
Hipfox 在 2007-04-03 (二) 11:06 發表

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;
?>

把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;
?>

--
from open mind to open source~