0

在 Drupal 7 块中,我试图在无序列表中列出特定词汇表的分类术语,并且还将任何已发布的节点作为该分类术语的一部分作为子项。

例子:

假设我有一个名为 Products 的词汇表,其中包含分类术语 Beer、Wine 和 Whiskey。说啤酒有 2 个附加的内容节点(Guinness & Budweiser)等等。

它最终应该看起来像这样:

  • 啤酒 (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)

但是,如何让这些分类术语的子项显示属于该分类术语一部分的已发布节点?

有任何想法吗?

谢谢

4

2 回答 2

0

这是创建视图的屏幕截图的分步说明,

http://www.brightwebsitedesign.com/how-to-use-views-aggregator-to-create-taxonomy-term-count-block

于 2013-11-15T07:54:13.343 回答
0

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

于 2012-11-02T21:05:57.433 回答