Добрый день.
Только разбираюсь в Drupal, до этого использовал другие движки, но этот мне почему-то не поддается.
У меня есть создана таксономия в следующем виде:
Материалы
-Категория 1
--Категория 1А
--Категория 1Б
--Категория 1В
-Категория 2
--Категория 2А
--Категория 2Б
--Категория 2В
Как мне с помощью модуля Views вывести ее в таком же виде?
Комментарии
Во-первых, во Views есть Taxonomy/Terms View, можно попробовать использовать его.
Во-вторых, можно посмотреть тут. Мне самому это в своё время подсказали и мне очень пригодилось!
А есть еще какие-нибудь варианты?
Можно как-то сделать вот так http://www.rivets.ru/production/ ??
Можно! Завтра на работе посмотрю, у меня где-то ссылка была на такую реализацию.
UPD: Вот здесь вроде бы.
Не совсем то, там показывается список нодов, привязанных к термину, а мне надо список терминов в словаре.
Кто-нибудь может посоветовать, где почитать про решение проблемы?
Решил все таким вот сниппетом. Может и кривой - но делает то, что нужно.
<?php
$vid =1; // номер словаря
$items = array();
$terms = taxonomy_get_tree($vid);
echo
'<ul>';foreach (
$terms as $t) { // это родительская категорияif ($t->parents[0] == 0) {
echo
'<li>';echo l($t->name, "taxonomy/term/$t->tid");
// находим все дочерние для нее
echo '<ul>';
foreach ($terms as $t1) {
if ($t1->parents[0] == $t->tid) {
echo '<li>';
echo l($t1->name, "taxonomy/term/$t1->tid");
echo '</li>';
}
}
echo '</ul>';
echo
'<li>';}
}
echo
'</ul>';?>
Может кому-нибудь тоже пригодится в будущем...
Новая версия - работает без глюков))
<?php
// и дочерние категории для текущей, т.е.
$vid =1; // номер словаря
$items = array();
$terms = taxonomy_get_tree($vid);
echo
'<ul class="term_parent">';foreach (
$terms as $t) {// это родительская категория
if ($t->parents[0] == 0) {
echo '<li>';
echo l($t->name, "taxonomy/term/$t->tid");
// находим все дочерние для нее
$has_parent = false;
foreach ($terms as $t99) {
if ($t99->parents[0] == $t->tid) {
$has_parent = true;
}
}
if ($has_parent) {
echo '<ul>';
foreach ($terms as $t1) {
if ($t1->parents[0] == $t->tid) {
echo '<li>';
echo l($t1->name, "taxonomy/term/$t1->tid");
// максимум три уровня
$has_parent = false;
foreach ($terms as $t99) {
if ($t99->parents[0] == $t1->tid) {
$has_parent = true;
}
}
if ($has_parent) {
echo '<ul>';
foreach ($terms as $t2){
if ($t2->parents[0] == $t1->tid) {
echo '<li>';
echo l($t2->name, "taxonomy/term/$t2->tid");
echo '</li>';
}
}
echo '</ul>';
}
echo
'</li>';}
}
echo '</ul>';
}
echo
'</li>';}
}
echo
'</ul>';?>