2012-11-02 102 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

你绝对可以做到这一点的意见。使用“字段”类型视图。将您的节点标题和“所有分类术语”(通过您的词汇过滤)添加为字段。添加指定未发布的过滤器以及所需的节点类型。在视图的格式设置中,将“分组字段”设置为您的分类术语。可以指定排序。通常我按术语排序,然后按节点标题排序。