Создание многоуровневого каталога на Drupal

Решила поделиться решением того, как создать многоуровневый каталог, так как сама долго искала в интернете.

Задача: Создать многоуровневый каталог продукции, в каждом дочернем уровне должны отображаться категории (термины таксономии, отмечены желтым цветом), которые входят в данную категорию. На самом последнем уровне отображается продукция (ноды, отмечены красным цветом).
Вложенность может быть любая.
каталог

Создаем тип материала Продукция, словарь таксономии - Продукция, связываем его с типом материала. В типе материала такие поля:

поля каталога

Создаем несколько единиц продукции, что б было что отображать. Создаем категории в словаре. у меня они выглядят так:

Создаем Views типа термин таксономии с такими настройками:

каталог

Создаем тип отображения страница. На этом этапе мы определяем как будет выглядеть страница со сприском терминов таксономии. Для этого в поле путь мы пышем адрес taxonomy/term/%. Знак процента означает что тут будет находиться аргумент - id термина.

В фильтрах выставляем фильтр по словарь и выбираем наш словарь Продукция.

В связях определяем Parent term (Родитель) и во время создания аргумента Term ID выбираем связь с родителем. В опции Provide default argument выбираем Taxonomy Term ID from URL. В Validator options проверка по id термина.

каталог

В полях выбираем термин. Я для отображения дверей в категорях использовала картинки. это можно сделать с помощью модуля Taxonomy image

Также можно вывести описание термина. Для того чтобы название термина было ссылкой на более глубокий уровень в опциях поля нужно поставить галочку Link this field to its taxonomy term page.

Можете также добавить дополнительные фильты и условия сортировки.

Теперь когда вьюшка отображения тарминов готова сохраняем ее и приступаем к созданию вьюшки типа материал, у меня она называется productpage.

каталог сайт

Тип отображения блок. Выбираем фильтр по типу материала, в нашем случае Продукция. Выбираем поля Заголовок, Фото и Цена (у вас могут быть индивидуальные поля).

В аргументе выбираем ID термина, указывает агрумент Provide default argument - PHP code.

$path = $_GET['q']; $path = explode('/', $path); return $path[2];

аргументы каталога

Сохраняем вьюшку. Идем на страницу блоков и размещаем созданный с помощью вьюшки блок в область контента. в опциях Показывать блок на определенных страницах выбираем Показать, если данный PHP-код возвращает TRUE  и пишем следующий код, что б материал отображался только на страницах нижнего уровня.

  1. <?php
  2. $vid = 1; // vid словаря термины из которого выводим
  3. $path = $_GET['q'];
  4. $path = explode('/', $path);
  5. $parentidthis = $path[2];
  6. $child_terms = taxonomy_get_tree(1, $parentidthis, -1, 1);
  7. if (count($child_terms) > 0) {
  8. return false;
  9. } else {
  10. return true;
  11. }
  12. ?>

Теперь категории будут отображаться так:

категории

А на последнем уровне будут выводиться материалы:

каталог

Для отображения меню я использовала модуль Taxonomy Treemenu, который генерит меню на основе терминов.

Как создать каталог с использованием разных отображений views читайте в следующей части Созднание многоуровневого каталога с различными отображениями для уровней.

Ключевые слова: 

Вас также может заинтересовать

Комментарии

3

Для того, что бы сделать термин, который является аргументом заголовком страницы - в редактировании аргумента есть поле "Заголовок". Туда можно вставить аргумент, например %1, тогда заголовком страницы будет аргумент.

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

CAPTCHA
Для того, что б подтвердить что Вы человек, заполните, пожалуйста, форму проверки
Image CAPTCHA
Введите символы, которые изображены на картинке.