在 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)
但是,如何让这些分类术语的子项显示属于该分类术语一部分的已发布节点?
有任何想法吗?
谢谢