Вывод терминов таксономии списком со вложениями

Главные вкладки

Аватар пользователя rampage rampage 2 ноября 2011 в 21:16

Всем привет. У меня есть такая задача:
Есть каталог продуктов, в нем пусть 10 категорий, кроме того внутри некоторых категорий есть только продукты, а в других — только подкатегории, а продукты в них.
Надо сделать страничку-каталог, где выводятся категории первого уровня. Те, в которых продукты — это ссылка на views-таблицу с этими продуктами, а те, где подкатегории должны разворачиваться и внутри подкатегории-ссылки на аналогичные views-таблицы.
Сам я смог сделать только полный список терминов таксономии определенного словаря, т.е. там не сворачивается ничего. Как сделать, чтобы сворачивались подкатегории не знаю, это первый вопрос.
Второй — ссылки ведут на taxonomy/term/x, а как их заменить на ссылки, по которым находятся соответствующие views-таблицы?
Пока вроде все. Если готовых решений нет, скажите примерную стоимость.
UPD: Не обязательно, чтобы сворачивалось/разворачивалось, можно чтобы просто вело на страницу со списком подкатегорий, а оттуда уже на страницы с views-таблицами товаров.

Комментарии

Аватар пользователя rampage rampage 3 ноября 2011 в 15:17

"flank" wrote:
Вам сюда: http://svobodakoda.net/2011/10/drupal-sozdanie-cataloga/[/quote]
Спасибо, это действительно то, что надо, но я не понимаю, как вывести родительские термины? Если я вручную ввожу /taxonomy/term/%, то он действительно выводит подкатегории или ноды этой категории (кстати, можно ведь переопределить вывод для нод, чтобы ничего не сломалось?), а как вывести родительские термины? Я попробовал разные фильтры, но получилось вывести только либо все термины, либо те, которые имеют родительские, а инвертировать этот фильтр не удалось.
Соответственно, вопросы остались такие:
1. Как вывести только родительские термины словаря таксономии?
2. Как переопределить вывод нод определенной категории/подкатегории, не сломав при этом то универсальное решение, которое предлагается по ссылке?
Еще раз заранее спасибо.

"q2_faith" wrote:
1. http://druit.ru/blogs/views/18
сниппет адаптируйте под себя

Это решение понравилось. Хотя от меня требуется другое, все равно спасибо, пригодится.

Аватар пользователя rampage rampage 3 ноября 2011 в 15:36

UPD:
Второй вопрос снимается, использовал вместо "View:Taxonomy_term", как предложено в уроке по ссылке, свой собственный view, настроенный отображать ноды типа продукт, причем добавил контекстный фильтр "Содержимое: Has taxonomy term ID (with depth)", а если результатов нет, то отображаю view, сделанный по уроку. Видимо из-за такой рекурсии и отображаются дочерние категории, если нет продуктов в родительской. Ну и ноды принадлежащие только к определенному термину отображаются потому что галочку "Inherit contextual filters" оставил.
Остается только вопрос, как вывести только родительские термины словаря, пойду погуглю.

Аватар пользователя q2_faith q2_faith 3 ноября 2011 в 15:41

"rampage" wrote:

1. в апи друпала есть функция для этого, можно сниппетом вывести
2. во вьюс в поле можно вывести родительские термины

Аватар пользователя rampage rampage 3 ноября 2011 в 15:51

"q2_faith" wrote:
1. в апи друпала есть функция для этого, можно сниппетом вывести

Неужели нет фильтра по глубине? По-моему, такие проблемы возникали уже очень давно, я думал это внедрили в ядро. Сейчас попробую использовать апи, если получится отпишу.

Аватар пользователя rampage rampage 3 ноября 2011 в 16:06

Использовал это http://www.drupalka.ru/node/14 решение, все работает. Всем спасибо за помощь.

UPD: Только я бы хотел вывести еще одно поле кроме названия этого термина и оформить все в таблицу. Как достать это поле, если есть его название? Заменить список на таблицу наверно сам смогу.

Аватар пользователя rampage rampage 3 ноября 2011 в 16:22

"q2_faith" wrote:

Вы переоцениваете мои возможности Smile
Я сделал как тут http://www.drupalka.ru/node/14 описано, поменял только ненумерованный лист на таблицу. Кроме поля name у родительских элементов определенного словаря есть еще поле, которое я сам добавил (картинка). Оно называется field_image, его я хотел бы вывести в том же ряду, что и name, но в соседней ячейке таблицы. Как это сделать?

Аватар пользователя q2_faith q2_faith 3 ноября 2011 в 16:37

в поиск забейте вывод терминов таксономии сниппет. я видел несколько с картинками. сделаете по подобию

Аватар пользователя rampage rampage 3 ноября 2011 в 16:54

Пока ничего не нашел, сам сделал так, что не работает только получение картинки, остальное выводится как надо.
Такой код
<?phpprint  "<tr><td>".l ($term->name,'taxonomy/term/'.$term->tid, array ('title' => $term->name))."</td><td>".l ($term->field_image,'taxonomy/term/'.$term->tid, array ('title' => $term->name))."</td></tr>";?>
выдает такую ошибку:
Notice: Undefined property: stdClass::$field_image в функции eval() (строка 7 в файле .../modules/php/php.module(74) : eval()'d code).
Причем если убрать "l ($term->field_image,'taxonomy/term/'.$term->tid, array ('title' => $term->name))" или заменить на текст, то этот текст подставляется и все работает. Значит ошибка в том, как я пытаюсь выцепить данные, находящиеся в field_image.

Аватар пользователя rampage rampage 3 ноября 2011 в 17:11

Заменил field_image в
"

".l ($term->name,'taxonomy/term/'.$term->tid, array ('title' => $term->name))." ".l ($term->field_image,'taxonomy/term/'.$term->tid, array ('title' => $term->name))."

";
на image, но не помогло. Возможно, ошибка в синтаксисе, возможно надо поставить какой-то модуль. Ну, посмотрим.