Всем привет. У меня есть такая задача:
Есть каталог продуктов, в нем пусть 10 категорий, кроме того внутри некоторых категорий есть только продукты, а в других — только подкатегории, а продукты в них.
Надо сделать страничку-каталог, где выводятся категории первого уровня. Те, в которых продукты — это ссылка на views-таблицу с этими продуктами, а те, где подкатегории должны разворачиваться и внутри подкатегории-ссылки на аналогичные views-таблицы.
Сам я смог сделать только полный список терминов таксономии определенного словаря, т.е. там не сворачивается ничего. Как сделать, чтобы сворачивались подкатегории не знаю, это первый вопрос.
Второй — ссылки ведут на taxonomy/term/x, а как их заменить на ссылки, по которым находятся соответствующие views-таблицы?
Пока вроде все. Если готовых решений нет, скажите примерную стоимость.
UPD: Не обязательно, чтобы сворачивалось/разворачивалось, можно чтобы просто вело на страницу со списком подкатегорий, а оттуда уже на страницы с views-таблицами товаров.
Комментарии
1. http://druit.ru/blogs/views/18
сниппет адаптируйте под себя
2. http://druit.ru/blogs/views/18
Вам сюда: http://svobodakoda.net/2011/10/drupal-sozdanie-cataloga/
UPD:
Второй вопрос снимается, использовал вместо "View:Taxonomy_term", как предложено в уроке по ссылке, свой собственный view, настроенный отображать ноды типа продукт, причем добавил контекстный фильтр "Содержимое: Has taxonomy term ID (with depth)", а если результатов нет, то отображаю view, сделанный по уроку. Видимо из-за такой рекурсии и отображаются дочерние категории, если нет продуктов в родительской. Ну и ноды принадлежащие только к определенному термину отображаются потому что галочку "Inherit contextual filters" оставил.
Остается только вопрос, как вывести только родительские термины словаря, пойду погуглю.
1. в апи друпала есть функция для этого, можно сниппетом вывести
2. во вьюс в поле можно вывести родительские термины
Неужели нет фильтра по глубине? По-моему, такие проблемы возникали уже очень давно, я думал это внедрили в ядро. Сейчас попробую использовать апи, если получится отпишу.
Использовал это http://www.drupalka.ru/node/14 решение, все работает. Всем спасибо за помощь.
UPD: Только я бы хотел вывести еще одно поле кроме названия этого термина и оформить все в таблицу. Как достать это поле, если есть его название? Заменить список на таблицу наверно сам смогу.
views_php посмотрите
в полях этого поля нет?
Вы переоцениваете мои возможности
Я сделал как тут http://www.drupalka.ru/node/14 описано, поменял только ненумерованный лист на таблицу. Кроме поля name у родительских элементов определенного словаря есть еще поле, которое я сам добавил (картинка). Оно называется field_image, его я хотел бы вывести в том же ряду, что и name, но в соседней ячейке таблицы. Как это сделать?
в поиск забейте вывод терминов таксономии сниппет. я видел несколько с картинками. сделаете по подобию
Пока ничего не нашел, сам сделал так, что не работает только получение картинки, остальное выводится как надо.
Такой код
<?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.
если мне память не изменяет, то $term->image
посмотрите массив
http://www.drupal.ru/node/30075
на всякий случай
и еще
http://www.drupal.ru/node/52164
Заменил field_image в
"
";
на image, но не помогло. Возможно, ошибка в синтаксисе, возможно надо поставить какой-то модуль. Ну, посмотрим.
установите [module=devel] или [module=drupalforfirebug]
посмотрите массив значений $term