• урок
  • pantey

Создание каталога в Drupal 7. Часть 2

31.07.2013

Продолжаем создание нашего каталога продукции в drupal 7, в прошлой части мы с вами разобрались с выводом терминов таксономии с сохранением иерархии и создали для этого отдельную страницу со ссылкой в главном меню. Если кто не в курсе, то вам имеет смысл прочитать первую часть данного урока, ибо здесь описывается продолжение создания каталога. Давайте подведём небольшие итоги что у нас уже есть:

  • Есть ссылка в главном меню
  • Есть страница «Каталога продукции»
  • Есть вывод терминов таксономии из словаря «Каталог» с сохранённой иерархией

Теперь нам лишь осталось реализовать правильный вывод. Как вы помните из первой части, мы получаем пустую страницу, если кликнуть по пункту «Категория1», а нам необходимо вывести его дочерние термины «Подтермин1, Подтермин2, Подтермин3». Приступим, идём по пути «Структура->Представления->Добавить новое представление» и вводим первоначальные параметры:

  • Имя представления: на ваше усмотрение
  • Показать: Термины таксономии
  • Типа: Каталог
  • Заголовок страницы: Продукция (это так же может быть на ваше усмотрение)
  • Путь: taxonomy/term/% (обязательно)
  • Форма отображения: неформатированный список из Поля

Мои настройки:

Жмём «Продолжить редактирование». Теперь воспользуемся пунктом «Контекстные фильтры» в разделе «Дополнительно» (надеюсь вы еще не забыли где он находится). Жмём добавить:

Далее выбираем «Термин таксономии: Родительский термин»

Жмём «Применить». Теперь в открывшемся окне в разделе «Если фильтра нет в URL», ставим кнопку напротив «Передать значение по умолчанию», в качестве «Тип» выбираем «ID термина таксономии из URL»

Жмём «Применить» и сохраняем представление. Теперь давайте посмотрим, что теперь получилось у нас на сайте, переходим на страницу «каталог продукции» и кликаем по «Категория1»

Видим, что теперь отображается именно так как нам и нужно, но теперь появилась другая проблема, если кликнуть по дочернему термину, то мы получим пустую страницу, это происходит потому, что данное созданное представление перекрывает вывод базового вывода нод по термину таксономии. Теперь давайте приступим к решению этой проблемы, для этого идём по пути «Структура->Представления->Добавить новое представление» и вводим первоначальные настройки

  • Имя представления: Список продукции
  • Показать: Содержимое типа Продукция
  • Ни страницу, ни блок создавать нет необходимости

Жмём «Продолжить редактирование». Изменим первым делом формат вывода с «полей» на «содержимое». Для этого в разделе «Формат» в пункте «Показать» кликаем по «Поля»

И ставим кнопку напротив «Содержимое»

Жмём «Применить» и далее еще раз «Применить». Теперь добавим контекстные фильтры, опять переходим в раздел «Дополнительно» и в пункте «Контекстные фильтры» жмём добавить. В открывшемся окне выбираем «Содержимое : имеет идентификатор термина таксономии»

Далее жмём «Добавить и настроить контекстные фильтры». В открывшемся окне в разделе «Когда значение фильтра не доступно» ставим кнопку напротив «Передать значение по умолчанию», а в качестве «Типа» выбираем «ID термина таксономии из URL»

Жмём «Применить» и сохраняем наше представление. Теперь переходим по пути «Структура -> Представления» и из списка выбираем предыдущее созданное нами представление, у меня оно называется как «production-loop»

Он должен содержать путь

  1. taxonomy/term/%

И жмём напротив него на кнопку «редактировать». Переходим в раздел «дополнительно» и напротив пункта «Поведение при отсутствии результатов» жмём «добавить»

В открывшемся окне выбираем «Глобальный: область представления»

Далее жмём «Применить». В открывшемся окне в разделе «представление для вставки» выбираем представление которое было создано последним, у меня оно называется как «catalog_list»

Жмём «Применить» и сохраняем представление. Теперь смотрим, что у нас получилось на сайте

Как вы видите всё работает именно так, как нам и было необходимо, на этом с созданием каталога можно закончить.

-->
Узнавай о новых статьях сайта - первым. Просто подпишись на рассылку.

Комментарии (43)

Profile picture for user 1541
Алексей
21.08.2013

А что насчет Taxonomy Image у терминов?

Profile picture for user 1541
Алексей
21.08.2013

С Taxonomy Image затупил, можно же как поле использовать...

А как сделать, чтобы на странице /catalog (корень каталога), показывался только 1 уровень из подразделов?

Profile picture for user pantey
pantey
22.08.2013

Так же через views ограничить только родительским уровнем.

Profile picture for user 1541
Владимир
05.09.2013

Добрый день. Такой вопрос, в первом представлении в критерии фильтрации добавил " Термин таксономии: Родительский термин (= ) " и у меня начали выводиться только родительские термины(так мне и нужно), и при нажатии на них выводятся их подтермины. Но если в хлебных крошках сделать шаг назад (из подтерминов к род. термина) то выводятся и род. термины и подтермины в один столбец. Если не пользоваться хлебными крошками то всё нормально, но при преходе по ним проблемы. Подскажите что я делаю не так.

Profile picture for user pantey
pantey
05.09.2013

а URL,ы одинаковые в обоих случаях? т.е URL по которому вы переходите на страницу с подтерминами совпадает с тем, что в URL, которая дает вам хлебная крошка?

Profile picture for user 1541
Владимир
05.09.2013

Да урлы разные, если просто переходить то всё нормально, если по хлебным крошкам то taxonomy/term/all

Profile picture for user pantey
pantey
06.09.2013

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

Profile picture for user 1541
Артем
13.09.2013

Спасибо за Ваши уроки, сильн опомогли разобраться с Друпалом 7.
Сам только перешел с Шестерки.
Вопрос вот какой.
Сделал по Вашим урокам вывод таксономии - делаю Легкий каталог.
Но когда создаю сортировку товара раскрытую, при попытке отсортировать на странице вывода товаром, меня выкидывает на главную страницу сайта, соответственно никакой сортировки не происходит.

Как можно сделать сортировку товаров с доступом для посетителей имеея вывод таксономии и товаров по описанному Вами способу?
Может быть есть дополнительный модуль для Вьевс?
Сортировку пытаюсь сделать ссылкой, без input'ов и кнопки применить как это есть в стандартной раскрытой сортировке.
Спасибо!

Profile picture for user 1541
Сергей
02.10.2013

В очередной раз благодарю за доступные пониманию уроки. Можно сказать так - мой друпал начался именно с вас!

Прочитал и сделал всё как написано, но всё же вышло нечто косолапое, нежели каталог ((
и дело совсем не в том, что я где то сделал ошибку, дело в том что добавление в каталог товара, статьи, или фотографии должны быть предельно просты для заказчика сайта, также как и добавление новых категорий.

А теперь вопрос на который очень очень нужен подробный ответ:

Создаем в таксономии словарь "Каталог" и соответственно дерево терминов - разделы в каждом из них подраздел. К примеру раздел Телефоны и подразделы Самсунг, Нокиа, Ленова...
Создаём тип материала "Каталог" с указанием необходимых полей (фото, цена, артикул, описание...)
Выводим в меню дерево разделов (нам не нужно оно в самом контенте, достаточно вывести его сбоку в отдельном блоке-меню).
Теперь добавляем несколько телефонов раскидывая их в нужные подразделы (подтермины)
Выглядит вроде как всё путём, заходим в нокиа, там все нокии, в самсунг, самсунги. Для каждого раздела описание в самом верху. То что нужно! НО в родительских разделах пусто, а по существу должны быть все телефоны из всех подразделов. И вот это меня терзает ((

И так переходим к самому ядру моего вопроса. Как осуществить (знаю, что через виев иначе вроде как невозможно) эту естественную функцию каталога?
Так чтобы не изменить простой процесс добавление товаров ("Добавить содержимое->Каталог товаров"), то есть только через ноду.
Так, чтобы при добавлении новых разделов и подразделов в таксономии, не приходилось бы создавать дополнительные для них представлений в вие.
Так, чтобы заголовки разделов, которые указывал при создании термина оставались не заменёны одним на всех заголовком какого нибудь представления.
Так, чтобы осталась, как сейчас, возможность создать описание термина во всех разделах и их родителях!

Спасибо Вам огромное, думаю, что вопрос изложил понятно, с нетерпением жду ответ!

Profile picture for user 1541
Артем
03.10.2013

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

Profile picture for user 1541
Николай
04.10.2013

Круто.. Спасибо! Я несколько дней бился над это задачей, все понятно и разжованно.

Profile picture for user 1541
Сергей
11.10.2013

Короче не стал сильно парится с вием и сделал на первых этапах такой вот каталог товаров. Это моя первая работа такого рода (не судите строго). Благодаря вашему сайту drupalfly.ru получилось около дела. Главное клиент доволен. Теперь продолжу вникать в тонкости вия. Очень полезная штука!

Profile picture for user 1541
Диана
26.10.2013

Делала всё, как написано - товары не отображаются при выборе подкатегории :(

Profile picture for user 1541
Дмитрий
03.11.2013

Все было хорошо до последнего шага, но вот на последнем шаге товары не выводятся и все тут. Что сделать не представляю.

Profile picture for user 1541
Дмитрий
04.11.2013

Какая то проблема в последнем представлении (которое и не страница и не блок). Пока не ввожу контекстные фильтры вываливаются все созданные товары, как только ввожу фильтр - все пропадает и показывается ничего.

Profile picture for user 1541
Дмитрий
06.11.2013

Отличный урок, все получилось, единственное как сделать чтоб работал фильтр?

Profile picture for user pantey
pantey
06.11.2013

что фильтруете?

Profile picture for user 1541
Дмитрий
06.11.2013

Разобрался. Все таки на drupal делаю первый магазин. Присвоил термины таксономии самим товарам, а не их дисплеям. Исправил, все заработало.
Спасибо за урок. И за остальные тоже.

Profile picture for user 1541
Mike
17.11.2013

Hi All!

Господа, поделитесь плиз ссылками на работающие варианты!

10х!

Profile picture for user pantey
pantey
17.11.2013

а этот по вашему не работающий?

Profile picture for user 1541
Никита
14.01.2014

Павел, здравствуйте. Спасибо за статью. Возник вопрос: Каковы мои действия, если уровень вложенности у категорий будет больше? Т.е:

Категоря 1
Подтермин 1
Еще один подтермин 1
Еще один подтермин 2
Подтермин 2
Подтермин 3
Категория 2
Подтермин 4
Подтермин 5
Подтермин 6
Категория 3

Profile picture for user 1541
Никита
14.01.2014

Категоря 1
-----Подтермин 1
--------Еще один подтермин 1
--------Еще один подтермин 2
-----Подтермин 2
-----Подтермин 3
Категория 2
-----Подтермин 4
-----Подтермин 5
-----Подтермин 6
Категория 3

Profile picture for user pantey
pantey
19.01.2014

по сути и с вашей иерархией данный способ должен работать.

Profile picture for user 1541
manysys
20.03.2014

Здравствуйте. Очень полезный урок. Но вот вопрос как создать второй каталог.
Первый taxonomy/term/% перекрывает второй. Есть ли решение для этой проблемы?

Profile picture for user pantey
pantey
20.03.2014

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

Родитель
-Раздел
--подраздел
--подраздел
-Раздел 2
--подраздел
--подраздел

Profile picture for user 1541
manysys
21.03.2014

Извиняюсь если не понял, но есть допустим два словаря технические характеристики и отзывы по 300 терминов и у них разные ссылки в меню , я думаю это будет не совсем удобно если это будет все в одном месте.

Profile picture for user 1541
Юрий
27.03.2015

Спасибо огромное, все получилось. У меня вопрос такого рода - у меня есть тип материала "Товар" есть поля - имя производителя (Ссылка на термин - авто завершение ввода) в самом термине - название товара и логотип (изображение). Подскажите, как настроить, чтобы логотип автоматически загружался из термина вместе именем производителя.

Profile picture for user 1541
Mist
30.03.2015

Через отношения можно дополнительно подключить всю информацию о термине во вьюшку и через раздел "Поля" вывести логотип.

Profile picture for user 1541
Юрий
30.03.2015

Дело в том, что у меня товар выводится то не через views.

Profile picture for user 1541
Шаман
31.03.2015

Очень существенное замечание: "Но вот вопрос как создать второй каталог. Первый taxonomy/term/% перекрывает второй. Есть ли решение для этой проблемы?",
поэтому хочу поделиться не менее существенным соображением, по этому поводу:
Если существует второй, третий и т.д. каталог (т.е. таксономия), то вторая вьюха (из данной статьи) будет забивать вывод материалов из этих каталогов "оформлением" из третьей вьюхи, т.к. настройка пути (taxonomy/term/%) будет распространяться на все без исключения таксономии...
Решением данной проблемы будет установка модуля - Taxonomy display и использование расширенного отображения, страницы термина: т.е. установки в опции ПРЕДСТАВЛЕНИЯ DISPLAY OPTIONS - Просмотр - ВЬЮХА 2 (или «production-loop», из примера в данной статье).

Автору респект, очень помогло разобраться по теме...

Profile picture for user 1541
Наташа
01.04.2015

Подскажите пожалуйста, я переопределила вывод представления каталога ubercart GRID файлом views-view-fields--uc-catalog.tpl.php. Все корректно выводится как я и хотела в соответствие с кодом в файле.
Единственная проблема, не могу понять - как мне выводить разные поля в сетке для разных категорий словаря?
К примеру: для категории тапочки мне нужно вывести в сетку поля размер, цвет,цена и материал, а для категории караси- размер,вес,цена и количество.
На странице товара я вывожу это запросто создав два разных блока и указав в фильтрах в каких разделах показывать какой блок. А как это сделать в views-view-fields--uc-catalog.tpl.php?

Profile picture for user 1541
Ольга
09.05.2015

Спасибо большое, все получилось.
Только одно "но": на последнем уровне, где выводятся уже товары, в названии стоит "Раздел каталога" (так у меня вьюха называется). То же самое и в хлебных крошках.
Не нашла, как вывести вместо названия вьюхи название раздела каталога. Подскажите?

Profile picture for user 1541
Наталья
01.06.2015

Здравствуйте. Помогите, пожалуйста, разобраться, что не так в настройках представления Каталога товаров Drupal 7.
Есть две проблемы:
1. На страницах не выводится описание раздела каталога, хотя они были указаны при создании и отображение описания включено в управление

Скрины настроек:
отображением каталога http://prntscr.com/7bsalm
настройки представления: http://prntscr.com/7bsbb7

3. Вместо количества товаров в подкатегориях выводится nid
скрин экрана http://prntscr.com/7bsc6f

Profile picture for user 1541
Наталья
01.06.2015

Не могу добавить поле COUNT(содержимое: Nid) для представления каталога

Profile picture for user 1541
Дмитрий
03.09.2015

У меня тоже проблемы с заголовком страницы. Вместо названия раздела (термина таксономии) выводится название представления, а это как то не логично. Вроде товары из разных категорий, а заголовок всегда один и тот же. Помогите пожалуйста.

Profile picture for user pantey
pantey
03.09.2015

используйте drupal_get_title() в хуках hook_preprocess_html - для изменения title в head, и hook_preprocess_page для изменения заголовка страницы.

Profile picture for user 1541
Дмитрий
03.09.2015

А с помощью Views или каких то стандартных операций это можно сделать? Может модуль какой то есть?

Profile picture for user 1541
Дмитрий
03.09.2015

Нашел решение! В представлении в заголовке написал %1 и стали выводиться названия терминов таксономии.

Profile picture for user pantey
pantey
03.09.2015

отлично.

Profile picture for user 1541
Ольга
28.03.2016

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

Profile picture for user 1541
Никита
21.12.2017

Здравствуйте.

Помогите разобраться, пожалуйста.

 

После этого шага возникает проблема "Жмём «Применить» и сохраняем представление. Теперь давайте посмотрим, что теперь получилось у нас на сайте, переходим на страницу «каталог продукции» и кликаем по «Категория1»".

Вот скрин - http://screenshot.ru/upload/image/aS0A

Это происходит, когда я указываю путь: taxonomy/term/%

Когда же меняю на любой другой, ошибок нет, но нет подкатегорий, как и ранее пустая страница.

Profile picture for user 1541
Денис
19.05.2018

Доброго времени.
Вывел на главной странице каталога только термины первого уровня через "Критерии фильтрации" > "Термин таксономии: Родительский термин (= )"
А как для них скрыть пустые, т.е. вывести только те термины, у потомков которых есть материалы?

Profile picture for user 1541
Александр
10.08.2018

Тоже получил пустые страницы категорий. Что не так сделать мог?