DARTHARTH

Вывод дочерних таксономий такущей категории ноды на Drupal 7

Выводим в блоке ноды php код который будет выводить подкатегории родительской категории данной ноды.

<?php
if (arg(0) == 'node') {
    $node = node_load(arg(1));
    $current_category = taxonomy_term_load($node->field_category['und']['0']['tid']); //получаем текущую категорию
    $parent_category  = taxonomy_get_parents($current_category->tid);  //получили родительскую категорию+
    if (!empty($parent_category)) {
        $conter = 0;
        foreach ($parent_category as $parent => $object) {
            $conter += count(taxonomy_get_children($object->tid));
        }
        if ($conter > 1) {
            echo '<div class="block-head"><p>Вместе с '.$current_category->name.' смотрят</p></div>';
            echo '<div id="product_child_tax">';
            foreach ($parent_category as $parent => $object) {
                if (!empty($object)) {
                    $child_cat = taxonomy_get_children($object->tid); //получаем все дочерние категории родительской
                    foreach ($child_cat as $cat) {
                        if ($current_category->tid == $cat->tid) { //обходим все дочерние КРОМЕ текущей категории
                            continue;
                        }
                        $cat_url = url('taxonomy/term/'.($cat->tid), array('absolute' => true));
                        echo '<div><a href="'.$cat_url.'">'.$cat->name.'</a></div>';
                    }
                }
            }
            echo '</div>';
        }
    }
}
?>

Краткие пояснения — сначала получаем категорию привязанную к текущей ноде, после чего получаем её родителя. Если таки родитель существует (а не присвоена нода конкретно к категории верхнего уровня) получаем его список дочерних подкатегорий. Далее делаем цикл по выводу этих категорий с условием, что бы категория не была текущей, т.е. что бы в списке не выводилась категория нашей ноды.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Scroll Up