在解决了在一个块中显示给定分类术语的子术语的问题之后,我终于偶然发现了一段代码,它完全符合我的要求
根据说明,我已将以下内容添加到我的 template.php
function themename_child_terms($vid = 1) {
if(arg(0) == 'taxonomy' && arg(1) == 'term') {
$children = taxonomy_get_children(arg(2), $vid);
if(!$children) {
$custom_parent = taxonomy_get_parents(arg(2));
$parent_tree = array();
foreach ($custom_parent as $custom_child => $key) {
$parent_tree = taxonomy_get_tree($vid, $key->tid);
}
$children = $parent_tree;
}
$output = '<ul>';
foreach ($children as $term) {
$output .= '<li>';
$output .= l($term->name, 'taxonomy/term/' . $term->tid);
$output .= '</li>';
}
$output .= '</ul>';
return $output;
}
}
然后我创建了一个块并添加了:
<?php // $vid is the vocabulary id.
print themename_child_terms($vid = 1);
?>
这完美地显示了当前术语的子术语。但是,它会显示父术语下存在的所有术语,即使没有使用该术语的内容。
例如查看第 1 学期所有项目的页面,我得到
孩子 1
孩子 2
孩子 3
在块中正确列出。但是,例如,如果没有标记为“child 3”的内容,它仍然会在块中显示该术语。这不是很有用,因为它链接到一个空的术语页面。我将如何修改代码以仅显示实际具有与之关联的项目的孩子。因此,如果没有标记为“儿童 3”的儿童,则该术语不会出现。是不是很容易修改?
感谢您提供任何解决方案。
缺口
使用 Drupal 6