在Drupal 7块中,我试图在无序列表中列出特定词汇表的分类术语,并且还将任何已发布的节点作为子项的分类术语的一部分。
示例:
假设我有一个名为Products的词汇表,其中包含分类术语Beer,Wine,&威士忌酒。 Say Beer有2个内容节点(Guinness& Budweiser)等等。
它应该看起来像这样:
我已经弄清楚如何用计数显示“只是”分类术语,但是无法弄清楚如何打印与每个术语相关的所有已发布节点。这就是我得到的:
<?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>';
?>
这将产生以下输出:
但是,如何让这些分类术语的子项显示属于该分类术语的已发布节点?
有什么想法吗?
谢谢
答案 0 :(得分:0)
你绝对可以通过观点来做到这一点。使用“字段”类型视图。添加节点标题和“所有分类术语”(按词汇过滤)作为字段。添加指定未发布的过滤器以及所需的节点类型。在视图的格式设置中,将“分组字段”设置为分类术语。 (可选)指定排序。通常我按术语排序,然后按节点标题排序。
答案 1 :(得分:0)