Создание каталога продукции с помощью Taxonomy + Views + Panels

В данной статье речь пойдет о том как самостоятельно создать простейший каталог продукции на Drupal 7 без использования Ubercart и Commerce и других готовых решений. Вы можете подумать зачем изобретать велосипед если уже есть готовое решение, но если перед вами стоит задача создать обычный сайт с каталогом продукции, а не полноценный интернет-магазин с корзиной товаров, оформлением заказа, платежной системой и т.д. и т.п., к чему тянуть за собой столько ненужного функционала?

Оглавление

В свое время я перепробовал уйму вариантов по созданию каталога были варианты на одном лишь Views, были Taxonomy + Views, все они были рабочие, но их гибкость вызывала сомнения.

Конечно я полез в google и нарыл инфу. Среди русскоязычных сайтов мне попался всего лишь один достойный вариант описаный на блоге Nikita Malyshev. Я попробовал его вариант и он мне понравился по следующим причинам :

  1. Гибкость благодаря Views & Panels.
  2. Используются системные алиасы.
  3. Нет фильтра php.
  4. Cтраницы taxonomy/term/ID из словаря «Категории каталога» будут более информативными.

Структура создаваемого каталога будет следуещей

Для создания каталога понадобится установить и включить:

  • Views
  • Panels
  • Ctools
  • Page manager
  • Views content panes

В начале создаем словарь таксономии с названием «Категории каталога» (или же название на ваш выбор).

  • Структура » Таксономия » Добавить словарь
    1. Добавьте в созданный словарь необходимые вам категории ( в нашем примере Названия брендов и вложенные в них названия категорий).
    2. Затем создаем новый тип материала (например «товар») который в последствии мы будем добавлять в каталог продукции.
  • Структура » Типы материалов » Добавить тип материала
    1. Добавьте в созданный тип материала необходимые вам поля (например: Изображение, артикул и т.д.), обязательное для нашей задачи поле — Ссылка на термин (Term reference) в настройках которого необходимо указать созданный нами ранее словарь «Категории каталога».
    2. Также добавьте парочку тестовых товаров, чтобы видеть результаты.

Создание представлений (Views)

Создание главной каталога

Переходим: Структура » Представления » Добавить представление(Add new view)

  1. Указываем Имя представления — «Каталог»
  2. Выбираем — Термины таксономии (Show: Taxonomy terms) типа —«Категории каталога» (of type «Категории каталога»)
  3. Ставим галочку — Создать страницу («Create a page») и заполняем поля.
  4. Заголовок страницы (Page title) — Каталог
  5. Путь (Path) — catalog
  6. Жмем кнопку Сохранить и продолжить (Continue & edit)
  7. Выбираем необходимый вам Формат (Format) к примеру Сетка.
  8. В разделе Критерии фильтрации (Filter criteria) жмем Добавить(add).
  9. Выбираем — Термин таксономии: Родительский термин (Taxonomy term: Parent term) и жмем Применить(Apply), зоставляем настройки по умолчанию и снова Применить(Apply). Этим мы сделали чтобы выводились только родительские категории.
  10. Сохраняемпредставление.

И так мы создали страницу по адресу имя вашего сайта/catalog на которой будут отображаться только родительские термины(а именно бренды нашего каталога).

Вывод дочерних категорий

Создадим еще одно новое представление по аналогии с предыдущим переходим:

  • Структура » Представления » Добавить представление(Add new view)
    1. Указываем Имя представления (View name) — «Дочерние категории».
    2. Выбираем — Термины таксономии (Show: Taxonomy terms) типа —«Категории каталога» (of type «Категории каталога»)
    3. Снимаем галочку Создать страницу («Create a page»).
    4. Жмем кнопку Сохранить и продолжить (Continue & edit)
    5. Добавляем новый тип представления — Фрагмент панели (Content pane)
  1. Выбираем необходимый вам Формат (Format) к примеру Сетка
  2. С права в разделе «Расширенный» (advanced) в Связи (Relationships) выбираем — Термин таксономии: Родительский термин (Taxonomy term: Parent term).
  3. В Контекстные фильтры (Contextual filters) выбираем — Термин таксономии: ID термина (Taxonomy term: Term ID). В Отношения (Relationship) указываем — Родитель (Parent) (если не меняли в предыдущем пункте). В разделе значение по умолчанию выбираем Provide default value, type: Taxonomy term ID from URL и жмем Применить(Apply).
  • Сохраняем views.

И так мы создали представление, которое будет выводить список дочерних терминов (в нашем случае категории брендов), относительно текущего.

Вывод продукции в категории

Создаем очередное представление, переходим:

  • Структура » Представления » Добавить представление(Add new view)
    1. Указываем Имя представления (View name) — Товар
    2. Выбираем Показать — Содержимое — типа — Товар Show Content of type (если вы не следовали инструкции то название вашего типа содержимого под продукцию)
    3. Снимаем галочку Создать страницу («Create a page»).
    4. Жмем кнопку Сохранить и продолжить (Continue & edit)
    5. Добавляем новый тип представления — Фрагмент панели (Content pane)
    6. Добавляем Контекстные фильтры (Contextual filters) — Содержимое: Has taxonomy term ID (with depth)
    7. (Content: Has taxonomy term ID (with depth)). В настройках этого фильтра в поле — Глубина (Depth) указыем: 0 — если хотите чтобы отображался товар текущей категории, 10 — если хотите чтобы отображались товары из текущей категории, а также товары из его подкатегорий.
    8. Ставим галочку Provide default value и выбираем Taxonomy term ID from URL.
  1. Жмем кнопку Применить(Apply).
  2. В разделе Нет результатов поведение (No results behavior) выбираем Global: Text area и в его настройках пишем текст который будет выводиться если в категории отсутствует товар, что-то типа «Товары в этой категории еще не добавлены».
  3. Сохраняем вьюху.

В этом представление будет выводиться все товары, которые относятся к выбранной категории.

Настройка Panels

Теперь приступим к настройке Panels. Переходим на страницу стандартных панелей:

  • Структура » Панели или имя вашего сайта/admin/structure/pages.
    • Нам нужно включить Шаблон термина таксономии — term_view.

У меня с первого раза включить не получилось, выскочила ошибка:

Page manager module is unable to enable taxonomy/term/%taxonomy_term because some other module already has overridden with views_page.

В этом случае нужно просто на странице представлений выключить стандартное представление Taxonomy term — /taxonomy/term/%

  • Жмем на Правка(Edit) и добавляем новый вариант: «Add a new variant» и заполняем поля:
    1. Заголовок (Title): Каталог.
    2. Тип варианта (Variant type): Панель(Panel).
    3. в Дополнительных функциях (Optional features): ставим галочку в пункте Правила выбора (Selection rules).
    4. Жмем кнопку Создать вариант (Create variant).
  • Попадаем в следующий этап настройки. Тут настраивается то, когда будет срабатывать данный вариант. Нам нужно чтобы он срабатывал на термины созданного нами ранее словаря «Категории каталога». Для этого нужно:
  • Из списка выбирать Taxonomy: vocabulary и жмем Добавить (Add).
    1. В pop-up окне выбираем наш словарь(в нашем примере Категории каталога) и жмем Сохранить (Save).
    2. Затем кнопку Продолжить (Continue).
    3. В следующем шаге оставляем все по умолчанию, поэтому жмем кнопку Продолжить (Continue). Следующий шаг нам тоже не нужен — оставляем без изменений. В итоге мы окажемся на вкладке — Содержимое (Panel content) — Варианты » Каталог » Содержимое.
    4. Здесь нам нужно настроить, что и где будет отображаться. Сделаем так чтобы заголовок страницы был как и у названия категории, для этого в поле title пишем %term:name.
    5. За тем в сером поле обведенном пунктиром в верхнем левом углу, жмем на шестеренку и выбираем Добавить содержимое (Add content). Во всплывающем окне слева выбираем пункт — Представление (Views) и добавляем наше предстовление — «Дочерние категории», в такой же последовательности добавляем еще одно наше представлением «Товар». Все последующие шаги и настройки после выбора представления просто оставляйте по умолчанию, они нам не нужны.
  • На этом все, нажимаем кнопку Создать вариант (Create variant).
  • Теперь перейдя по адресу имя вашего сайта/catalog вы увидите категории(Бренды). Перейдя в категорию(Бренды), вы увидите товар а также подкатегории.

Осталось дело за малым настроить внешний вид и вывод нужных вам полей в каждой вьюшке, но с этим я думаю вы справитесь.

Создаем в подвале или шапке вьюшки текстовое поле с php filter и туда:

<?php if (!isset($_GET['page'])) {
$category =  taxonomy_term_load(arg(2));
echo "{$category->description}";
} ?>
Свежие записи
Команда RD

Команда RD и RMDIR позволяют удалять как каталоги, так и

Оборудование
help2site
Что такое блок питания компьютера?

Блок питания компьютера — что это? Блок питания компьютера это энергетический центр, именно он питает электричеством все комплектующие компьютера, и позволяет ему работать. Это в

Web-Дизайн
help2site
О файлах Sitemap

Что такое файл Sitemap? Файл Sitemap позволяет сообщить поисковым роботам о том, как организован ваш сайт. Роботы поисковых систем сканируют этот файл, чтобы более точно

Оборудование
help2site
Обзор видеокарты Intel Graphics Media Accelerator 4500M

Intel Graphics Media Accelerator 4500M – встроенная графическая карта, которая поддерживает DirectX 10. Разрабатывалась данная модель карты специально для недорогих ноутбуков. Если сравнивать с GMA

Оборудование
help2site
Как выгодно купить новый компьютер

Здравствуйте уважаемый посетитель, если вы собрались покупать новый компьютер, то наверно уже задались вопросом, что, где и как? Купить, при этом не разочароваться в своей

Настройка
help2site
Восстановление данных и удаленных файлов

Каждый пользователь персонального компьютера хотя бы раз находился в ситуации, когда приходилось думать, об восстановлении данных и удаленных файлов с компьютера. Мы все сталкиваемся в

Оборудование
help2site
Почему принтер не печатает? Выясняем причины

Оглавление Что делать, если принтер отказывается нормально печатать Это, как правило, случается в самое неподходящее время — когда вам срочно нужен важный документ, а принтер

Программы
help2site
Deploy NodeJS приложения на VestaCP

Настройка Nginx для deploy сайта на nodejs. Под катом: конфигурация nginx, pm2 как замена nodemon и forever.  Как всем известно NodeJs-приложение слушает определенный порт. Обычно