Борясь с проблемой отображения дочерних терминов для данного таксономического термина в блоке, я, наконец, наткнулся на кусок кода, который точно что я хочу hereDrupal - Показать дочерние условия текущего термина, только если существуют дочерние элементы - необходима модификация кода
в соответствии с инструкциями, я добавил следующее к моему 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
правильно указаны в блоке. Но, если нет кусков контента, помеченных «дочерним 3», например, он все еще показывает этот термин в блоке. Это не очень полезно, поскольку оно связано с пустой страницей. Как мне изменить код, чтобы показывать только те дети, которые на самом деле имеют связанные с ними элементы. Поэтому, если нет детей с тегами «Child 3», тогда этот термин не будет отображаться. Это легкая модификация?
Благодарим вас за любые решения.
Ник
Работа с Drupal 6