• lesson_for_request
  • pantey
17.07.2013

Всем привет, давно я ничего не публиковал на сайт, извините много работы, а сейчас выпало 2 часа свободного времени и решил я это время потратить на написание статьи, наверное на наболевшую тему для многих, а именно вывод блока похожих товаров (под товарами естественно понимаются ноды). Те жаждающие, которые меня просто заваливали просьбами о написании данной статьи можете поставить себе галочку о выполненной работе. Итак, по традиции ставим задачу: «Вывод списка нод в блоке, привязанные к одному термину таксономии». Естественно данный блок должен отображаться в полном содержании ноды, а не в тизере, ибо смысла в этом нет никакого. Приступим к выполнению, как всегда в моём распоряжении Drupal 7 и стандартный шаблон Bartik. Для выполнения нам понадобится великий и могучий модуль Views,скачать его можно вот отсюда, а что он из себя представляет можно почитать вот здесь. Для примера я создал 3 позиции товара, которые привязаны, к одному термину таксономии

Если, кому-то необходимо , то вот список моих терминов.

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

Дальше заполняем необходимые поля, а именно:

  • Название: similar (у вас может быть каким угодно)
  • Тип: Товар (У вас может быть каким угодно)

Далее ставим галочку «Создать блок» и в качестве формата вывода ставим «Неформатированный список» из «полей». И будем выводить по 2 элемента на страницу (просто у меня больше нод нет), у вас же естественно может быть любое количество отображения. Все первоначальные настройки вьюхи смотрим на скриншоте:

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

Перед нами откроется модальное окно, со списком всевозможных полей, нам же нужно поле «изображение», которое присутствует в типе материала «Товар» (У вас может быть другой тип материала)

И ставим напротив него галочку. Далее жмём применить. Теперь настроим вывод поля, а именно, уберём метку и сделаем изображение ссылкой на полное содержание ноды, настройки смотрим на скрине

И жмём применить. Теперь давайте разберемся с «критериями сортировки», это необходимо для того, что бы при каждом обновлении страницы, нам показывали разную продукцию, для этого кликаем по кнопке «добавить», напротив раздела «Критерии Сортировки» и в настройках выбираем «Глобальный:Случайно»

И далее применить два раза. Теперь удалим сортировку по дате публикации, для этого жмём на треугольник рядом с кнопкой «добавить»

Перед нами раскроется меню, где необходимо кликнуть по «Изменить порядок». Теперь напротив пункта «Содержимое: дата публикации » кликаем по кнопке «Удалить»

И далее применить. Ну вот с выводом мы определились, теперь нам необходимо передать значение термина таксономии в представление, на основе которого вьюха и будет подгружать заголовки и изображения нод, привязанные к этому же термину. В этом нам помогут «Контекстные фильтры». Раскрываем правый раздел вьюхи «Дополнительно»

И в подразделе «Контекстные фильтры» жмём добавить. Перед нами откроется окно с параметрами, для решения нашей задачи нам необходимо выбрать «Содержимое: название вашего словаря», в моём случае он так и называется «Словарь 1»

И жмём «Применить». Теперь настраиваем сам фильтр, ставим радиокнопку напротив «Передать значение по умолчанию», в качестве типа выбираем «ID термина таксономии из URL», снимаем галочку с «Загрузить фильтр по умолчанию со страницы термина» и ставим напротив «Загрузить фильтр по умолчанию со страницы материала» и выбираем необходимый нам словарь, в моём случае это «Словарь 1»

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

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

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

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

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

Profile picture for user Андрей
Павел36
01.10.2013

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

Profile picture for user pantey
pantey
03.10.2013

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

Profile picture for user Андрей
Слава Юдаков
21.10.2013

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

Comparison of Similar / Relevant content block modules

Profile picture for user Андрей
Дмитрий
01.02.2014

А как сделать так, чтоб среди похожих товаров отображались товары, из диапазона цен просматриваемого товара? Если наш товар 20 руб. , то показываются только 18-22 руб.

Profile picture for user Андрей
Дмитрий
18.08.2014

Добрый день. Все делал по шагово, но к сожелению не выводить.
При добавлении поля изображения, есть только
Содержимое: Изображение
Появляется в: node:news1.
и еще в подразделе «Контекстные фильтры» нет моего словаря.
В чем может быть моя ошибка.
Спасибо.

Profile picture for user Андрей
Gonchar
16.12.2014

Все работает, проверяйте что сделали не так. Спасибо автору, с views теперь лучше стал разбираться. Наверное, один из самых лучших блогов по drupal. Спасибо.

Profile picture for user Андрей
Евгений81
17.12.2014

а как сделать чтобы сопутсвующие товары выводились не в ноде а во вьюхе рядом с нужным товаром?

Profile picture for user Андрей
Антон
29.10.2015

Добрый день!
Подскажите, пожалуйста, каким образом реализовать вывод сопутствующих товаров по определенному критерию? К примеру по свойству товара "Камень". (Речь идет об каталоге ювелирных изделий и необходимо выводить сопутствующие изделия с одинаковыми камнями).
Заранее благодарю за ответ.

Profile picture for user pantey
pantey
29.10.2015

зависит от структуры вашего каталога. Что является свойством вашего товара ? таксономия ?

Profile picture for user Андрей
Антон
29.10.2015

Павел, спасибо за оперативный ответ!
Свойством товара является поле. Поле - выпадающий список со значениями.

Profile picture for user pantey
pantey
29.10.2015

В контекстном фильтре указываете ваше поля и в качестве значения по умолчанию передаете ID материла из URL. Все остальное как описано в статье.

Profile picture for user Андрей
Антон
29.10.2015

Пробовал такой вариант. Не сработало.

Profile picture for user pantey
pantey
29.10.2015

должно, сейчас проверить не могу. Завтра подниму материал с полями - протеструю.

Profile picture for user Андрей
Антон
29.10.2015

Спасибо, Павел! Буду ждать ответа.