Всем привет, давно я ничего не публиковал на сайт, извините много работы, а сейчас выпало 2 часа свободного времени и решил я это время потратить на написание статьи, наверное на наболевшую тему для многих, а именно вывод блока похожих товаров (под товарами естественно понимаются ноды). Те жаждающие, которые меня просто заваливали просьбами о написании данной статьи можете поставить себе галочку о выполненной работе. Итак, по традиции ставим задачу: «Вывод списка нод в блоке, привязанные к одному термину таксономии». Естественно данный блок должен отображаться в полном содержании ноды, а не в тизере, ибо смысла в этом нет никакого. Приступим к выполнению, как всегда в моём распоряжении Drupal 7 и стандартный шаблон Bartik. Для выполнения нам понадобится великий и могучий модуль Views,скачать его можно вот отсюда, а что он из себя представляет можно почитать вот здесь. Для примера я создал 3 позиции товара, которые привязаны, к одному термину таксономии
Если, кому-то необходимо , то вот список моих терминов.
Все ноды привязаны к «термину 1» «словаря 1» и относятся к типу материала «Товар». У вас естественно всё может быть по другому, но это не столь важно. Итак, с исходными данными разобрались, идём дальше. Переходим по пути «Структура -> Представления» и добавляем новое представление (она же вьюха). Кликаем по пункту «Добавить новое представление»
Дальше заполняем необходимые поля, а именно:
- Название: similar (у вас может быть каким угодно)
- Тип: Товар (У вас может быть каким угодно)
Далее ставим галочку «Создать блок» и в качестве формата вывода ставим «Неформатированный список» из «полей». И будем выводить по 2 элемента на страницу (просто у меня больше нод нет), у вас же естественно может быть любое количество отображения. Все первоначальные настройки вьюхи смотрим на скриншоте:
И далее жмём «Продолжить редактирование». Для начала давайте разберемся с полями, а именно, что нам необходимо вывести, в нашем случае я думаю, самым разумным будет вывод заголовка и изображения, так как заголовок у нас уже есть по умолчанию, осталось добавить лишь поле «Изображение», для этого жмём кнопку «добавить» напротив раздела «Поля»
Перед нами откроется модальное окно, со списком всевозможных полей, нам же нужно поле «изображение», которое присутствует в типе материала «Товар» (У вас может быть другой тип материала)
И ставим напротив него галочку. Далее жмём применить. Теперь настроим вывод поля, а именно, уберём метку и сделаем изображение ссылкой на полное содержание ноды, настройки смотрим на скрине
И жмём применить. Теперь давайте разберемся с «критериями сортировки», это необходимо для того, что бы при каждом обновлении страницы, нам показывали разную продукцию, для этого кликаем по кнопке «добавить», напротив раздела «Критерии Сортировки» и в настройках выбираем «Глобальный:Случайно»
И далее применить два раза. Теперь удалим сортировку по дате публикации, для этого жмём на треугольник рядом с кнопкой «добавить»
Перед нами раскроется меню, где необходимо кликнуть по «Изменить порядок». Теперь напротив пункта «Содержимое: дата публикации » кликаем по кнопке «Удалить»
И далее применить. Ну вот с выводом мы определились, теперь нам необходимо передать значение термина таксономии в представление, на основе которого вьюха и будет подгружать заголовки и изображения нод, привязанные к этому же термину. В этом нам помогут «Контекстные фильтры». Раскрываем правый раздел вьюхи «Дополнительно»
И в подразделе «Контекстные фильтры» жмём добавить. Перед нами откроется окно с параметрами, для решения нашей задачи нам необходимо выбрать «Содержимое: название вашего словаря», в моём случае он так и называется «Словарь 1»
И жмём «Применить». Теперь настраиваем сам фильтр, ставим радиокнопку напротив «Передать значение по умолчанию», в качестве типа выбираем «ID термина таксономии из URL», снимаем галочку с «Загрузить фильтр по умолчанию со страницы термина» и ставим напротив «Загрузить фильтр по умолчанию со страницы материала» и выбираем необходимый нам словарь, в моём случае это «Словарь 1»
И жмём применить. Теперь сохраняем вьюху и идём по пути «Структура -> Блоки» и выводим только, что созданный нами блок в необходимый вам регион
Далее сохраняем настройки и смотрим, как это выглядит теперь на сайте.
При каждом обновлении страницы, вывод похожих товаров будет меняться. С задачей справились.
Комментарии (14)
Здравствуйте, а как сделать чтоб просматриваемый товар не выводился в список похожих товаров?
так же через views, получаете текущий nid ноды и добавляете его в исключения вьюхи.
при всей моей любви к этому сайту, все же хочу заметить, что для решения этой задачи есть готовые модули, более гибкие и правильно работающие.
Comparison of Similar / Relevant content block modules
А как сделать так, чтоб среди похожих товаров отображались товары, из диапазона цен просматриваемого товара? Если наш товар 20 руб. , то показываются только 18-22 руб.
Добрый день. Все делал по шагово, но к сожелению не выводить.
При добавлении поля изображения, есть только
Содержимое: Изображение
Появляется в: node:news1.
и еще в подразделе «Контекстные фильтры» нет моего словаря.
В чем может быть моя ошибка.
Спасибо.
Все работает, проверяйте что сделали не так. Спасибо автору, с views теперь лучше стал разбираться. Наверное, один из самых лучших блогов по drupal. Спасибо.
а как сделать чтобы сопутсвующие товары выводились не в ноде а во вьюхе рядом с нужным товаром?
Добрый день!
Подскажите, пожалуйста, каким образом реализовать вывод сопутствующих товаров по определенному критерию? К примеру по свойству товара "Камень". (Речь идет об каталоге ювелирных изделий и необходимо выводить сопутствующие изделия с одинаковыми камнями).
Заранее благодарю за ответ.
зависит от структуры вашего каталога. Что является свойством вашего товара ? таксономия ?
Павел, спасибо за оперативный ответ!
Свойством товара является поле. Поле - выпадающий список со значениями.
В контекстном фильтре указываете ваше поля и в качестве значения по умолчанию передаете ID материла из URL. Все остальное как описано в статье.
Пробовал такой вариант. Не сработало.
должно, сейчас проверить не могу. Завтра подниму материал с полями - протеструю.
Спасибо, Павел! Буду ждать ответа.