Создание каталога продукции с помощью 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
Нужно обновить биос без процессора? Решаем вопрос

Попробуем решить непростую задачу когда нужно обновить БИОС без процессора на материнской плате. Что такое BIOS и как им пользоваться, если коротко, самостоятельная микропрограмма, отвечающая за

iOS
help2site
Installous для айпад обзор

Installous поможет вам установить взломанные программы из appStore бесплатно. Я думаю не каждый захочет устанавливать взломанные игры или приложения на свой Айпад , безусловно выбор только за вами. Установка

Аndroid
help2site
Google Apps: до и после Material Design

Концепция Material Design стала основополагающим элементом политики развития Android  на ближайшие годы. Кому-то интерфейс в подобном стиле может показаться упрощенным, несерьезным, однако большинство сходится во мнении: это лучшее,

Windows
help2site
Explorer.EXE — как исправить ошибку?

Оглавление Проблемы с приложением Explorer.exe при работе в Windows: причины и решения. В компьютерной практике нередко приходится сталкиваться с очевидными, но весьма невероятными проблемами, точнее

Linux
help2site
Перезапуск сервера Apache

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

Web-Дизайн
help2site
PHP if-else. Условия в PHP.

В прошлый раз я писал о существующих типах операторов в PHP. Этот пост начинает серию связанных заметок об управляющих структурах (условия, циклы и т.д.) в PHP.

Оборудование
help2site
Как узнать какая у меня видеокарта

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