2012-11-02 139 views
0

在Drupal 7塊中,我試圖列出無序列表中特定詞彙表的分類術語,並且還有任何已發佈的節點分類術語作爲兒童。Drupal 7:手動列表分類術語和具有這些術語的節點

例子:

說我有一個叫做產品的詞彙,它具有分類術語啤酒,葡萄酒,威士忌&。說啤酒有2個內容節點連接到它(吉尼斯&百威)等。

它應該結束這樣看:

  • 啤酒(2)
    • 吉尼斯
    • 百威
  • 酒(2)
    • 黑比諾
    • 白色金芬黛
  • 威士忌(3)
    • 傑克丹尼
    • 莊家馬克
    • 冠冕

我已經想通了如何顯示 「公正」 與分類術語計數,但無法弄清楚如何打印與每個術語相關的所有已發佈節點。下面是我的了:

<?php 

$vid = 1; //vocabulary id 

$query = "SELECT tid, name, count 
FROM (
SELECT td.tid AS tid, name, COUNT(td.tid) AS count 
FROM taxonomy_term_data AS td 
JOIN taxonomy_index AS tn 
    ON td.tid = tn.tid 
JOIN node AS n 
    ON n.nid = tn.nid 
WHERE td.vid = ". $vid ." 
    AND n.status = 1 
GROUP BY td.tid 
ORDER BY count DESC 
) AS t 
ORDER BY name ASC"; 

$result = db_query($query); 

print '<ul>'; 
foreach($result as $term) { 
if ($term->count > 0) { 
    print '<li>'; 
    echo l($term->name, "taxonomy/term/$term->tid").' ('.$term->count.')'; 
    print '</li>'; 
} 
} 
print '</ul>';  

?> 

這將產生以下輸出:

  • 啤酒(2)
  • 酒(2)
  • 威士忌(3)

但我如何讓這些分類術語的孩子顯示作爲該分類術語組成部分的已發佈節點?

任何想法?

謝謝

+1

你爲什麼不使用視圖來做到這一點? – mmiles

+0

我不確定我是否可以使用Views來做到這一點。你能解釋一下更多的細節來幫助我嗎? – WebMW

回答

0

你絕對可以做到這一點的意見。使用「字段」類型視圖。將您的節點標題和「所有分類術語」(通過您的詞彙過濾)添加爲字段。添加指定未發佈的過濾器以及所需的節點類型。在視圖的格式設置中,將「分組字段」設置爲您的分類術語。可以指定排序。通常我按術語排序,然後按節點標題排序。