Достаточно частая задачка для каталога или интернет-магазина: вывести список производителей с подробными описаниями, а так же в подробном описании производителя или бренда вывести все товары, у которых заполнено свойство "Производитель." Расскажу как это сделать
Вывести производителей на сайте с отбором его товаров из каталога
Михаил Базаров: 23.01.2017 11:25:10
Вывести производителей на сайте с отбором его товаров из каталога
Достаточно частая задачка для каталога или интернет-магазина: вывести список производителей с подробными описаниями, а так же в подробном описании производителя или бренда вывести все товары, у которых заполнено свойство "Производитель." Расскажу как это сделать |
Павел: 26.01.2017 12:53:26
Здравствуйте!
Я вывел на сайте список производителей с помощью компонента новостей (bitrix:news), сделал чтобы при переходе по производителю передавался параметр (ID) и когда пользователь переходит на страницу с списком товаров, отображались товары только этого производителя. На ней использовал компонент новость детально (bitrix:news.detail) для отображения картинки, названия и описания производителя, а также компонент элементы раздела (bitrix:catalog.section) для вывода товара. Все работает отлично, но нужно еще кое-что, и я пока не представляю как это сделать... ВОПРОС: Подскажите пожалуйста, как после описания категории вывести список разделов первого уровня к которым относится товар этого производителя, и еще чтобы при переходе открывалась категория с отсортированным товаром по этому производителю (может как-то передать в фильтр параметр производителя, при переходе). |
Павел: 26.01.2017 21:57:37
Вопрос решен! Напишу как я это сделал, может кому пригодится. А также возможно кто-то укажет на ошибки или предложит более простой/лучший способ.
Все что описывал выше так и оставил, для вывода списка категорий использовал компонент структура разделов (catalog.section.list), он конечно не смог мне помочь вытянуть только те разделы в которых есть товар конкретного производителя но я смог вывести только первый уровень разделов. А при формировании ссылки, я просто передал параметр фильтра и все заработало.
- создал копию шаблона вывода разделов ( всеравно нужно было подогнать дизайн - и потом где выводится ссылка сделал так
|
Антон. К: 11.08.2017 23:46:24
Михаил, доброго времени суток.
Пробую вывести как написано, но возникла проблема, в отфильтрованном товаре ссылка на детальный просмотр товара формируется не правильно должно быть /catalog/fot-men/3213, а формирует /catalog//3213. Но стоит разместить компонент catalog.section отдельно от компонента новости все работает как надо. Подскажи пожалуйста в чем может быть проблема? |
Михаил Базаров: 12.08.2017 01:04:03
|
Антон. К: 12.08.2017 20:37:59
Михаил Базаров, Спасибо, оказалось что 1С выгружено не правильно из-за чего не правильно строились адреса у некоторых товаров.
|
Mechka: 22.12.2017 14:39:53
Доброго времени суток.
Михаил, подскажите пожалуйста, как быть если в свойствах товара бренды указаны не строкой, а справочником? Не получается правильно написать запрос. $GLOBALS['arrBrandName'] = array("PROPERTY_ИД_VALUE"=>$brandName); - это для строкового параметра, а как сделать для справочника? У меня соответственно выводятся все товары. Заранее благодарен. |
Михаил Базаров: 22.12.2017 18:16:58
|
Viktor26rus: 20.01.2018 06:23:27
Приветствую!
Михаил, спасибо за интересное видео, но есть следующая задача надеюсь сможешь помочь) Необходимо вывести страницу брендов, чтобы отображались не только элементы каталога, но и список всех доступных разделов в которых есть отсортированные элементы. ЧПУ необходимо настроить для разделов brands/section1/, brands/section2/ и тд. Для элементов ЧПУ catalog/section/element/ Есть решение, какие компоненты использовать? и структуру ЧПУ? Заранее спасибо! |
Михаил Базаров: 20.01.2018 10:30:06
То есть, бренды должны стать разделами каталога- это самое идеальное, меньше манипуляций делать дальше. |
MARK LIVE: 25.01.2018 10:31:23
|
Сергей Жуланов: 07.03.2018 12:09:18
А можно ли так сделать если из 1С приходит на сайт свойство Производитель с кодом CML2_MANUFACTURER только с типом Список?
|
Михаил Базаров: 07.03.2018 15:12:47
|
Antik: 06.05.2018 17:16:45
Михаил Базаров, Здравствуйте, а возможно ли скрывать производителя с общего списка, если к примеру в данный момент товаров нет, или они неактивны?
|
Михаил Базаров: 06.05.2018 21:34:34
|
Михаил Базаров: 27.06.2018 12:43:46
$GLOBALS['arrBrandName'] = array("PROPERTY_133_VALUE"=>"БРЕНД"); |
Андрей Фокин: 27.06.2018 14:39:41
Заработало по
$GLOBALS['arrBrandName'] = array("PROPERTY_255_VALUE"=>"ТДСК" ![]() |
Андрей Фокин: 27.06.2018 14:46:29
Как его собаку заставить работать по
$GLOBALS['arrBrandName'] = array("PROPERTY_133_VALUE"=>$brandName); Достал уже)))) |
Андрей Фокин: 27.06.2018 15:23:18
Михаил, простите, все работает! Плохо быть ЧАЙНИКОМ)))
|
Александр Сигида: 16.01.2019 09:51:20
Спасибо за проделанную работу и за то что делитель знаниями.
Как сделать так чтобы в списке брендов не выводились те у которых нет товаров, можно ли это автоматизировать? |
Александр Сигида: 17.01.2019 09:36:56
Разобрался сам, может кому будет полезно:
в VALUE_XML_ID - я храню символьный код бренда (бренды выводятся с ЧПУ адресами) проверяем задан ли производитель, затем проверяем есть у данного производителя страница с его товарами или нет, далее выводим ссылку или название бренда |
Микки Маус: 08.07.2019 19:40:05
Огромное спасибо за полезную информацию!
Не получается фильтровать, если у элемента в названии присутствуют двойные кавычки ". Может кому пригодится мой рабочий вариант.
|
Александр: 26.03.2020 12:38:15
Добрый день. Михаил а как данном случае добавить вывод всех разделов для бренда? У меня задача: Бренд - Разделы бренда - Товары и, желательно, все на одной странице. При этом нужно выводить сначала разделы, а потом подразделы не уходя из карточки бренда. При этом товар должен отбираться согласно разделу. Пытался сделать по вашей схеме, но catalog.section.list в упор не видит фильтра. Пытался сделать через привязку к разделам, но ни как. Вывожу бренды через каталог, а в catalog.element добавляю ваш код. Элементы отлично отбираются, а вот с разделами беда. Выводятся все сразу.
|
Михаил Базаров: 26.03.2020 13:01:42
По вопросу: Если правильно понял, нужно отбирать в сatalog.section.list разделы (с его подразделами), названия которых совпадают с названием бренда (хранится в $brandsName)? Быстрый (но не очень оптимизированный, в плане скорости) вариант: В шаблоне сatalog.section.list проверять первый уровень раздела на совпадение названия:
Идеальный вариант, доработать компонент сatalog.section.list сделав, по сути, тоже самое но выкинув не нужные запросы из компонента, что бы работал быстро и через настройки компонента. |
Александр: 26.03.2020 15:22:30
Нужно отбирать в сatalog.section.list разделы (с его подразделами) которые относятся к данному бренду, а потом передавать этот раздел в catalog.section чтоб фильтровал по бренду и разделу товары |
Александр: 31.03.2020 23:22:39
Подсмотрел как решается моя проблема в шаблонах альфы. Выводится компонент новостей, а в него засовывают catalog. Возможно за место новостей тоже используют catalog.Получается хорошее решение для страницы брендов. Выводится сразу описание бренда, разделы и товары бренда. И, самое главное, можно задать мету для страниц каталога типа Все товары Васи - Одежда от Васи - Носки от Васи. Но вот загвоздка - ни как не пойму как catalog заставить фильтровать по бренду. Компонент catalog вставляю в component_epilog. Михаил может сможете помочь?
|
zhuravleviktor: 12.10.2020 22:55:32
Александр, такая же беда с брендами на решении от альфы. Не могу настроить фильтр по свойству, чтобы выводились и разделы и товары в которых есть товары с этими брендами. Вы нашли какое-то решение?
|
Михаил Базаров: 14.10.2020 13:50:50
![]() |
Serge S: 09.12.2020 17:25:44
Подскажите пожалуйста, а как настроить умный фильтр на странице производителя? У меня перед выводом товаров производителя стоит умный фильтр, но в свойствах отображаются все бренды, хотя они на этой странице не нужны. Плюс попадают свойства с пустыми значениями. Как-то можно настроить умный фильтр, чтобы в зависимости от производителя пропадали пустые свойства из умного фильтра?
Так фильтруется каталог по бренду:
|
Михаил Базаров: 10.12.2020 04:10:30
Нужно в умный фильтр сразу передать производителя. То есть, что-бы текущий производитель был выбран, в нем, сразу- при загрузке страницы.
Можно получить ID значения свойства с производителем и js-ом кликнуть по нужному чекбоксу или выпадающему списку. |
Serge S: 10.12.2020 07:18:21
Он уже передан в умном фильтре. В catalog.filter и smart.filter записано "FILTER_NAME" => "arrFilterBrand". Фильтр работает с товарами производителя. Внутри фильтра остаются пустые свойства. Например, есть в каталоге 100 товаров, 50 товаров синих, 50 товаров зеленых. Перехожу на страницу конкретного производителя, в нем остается 50 синих товаров, но в умном фильтре можно выбрать синие и зеленые. Я хочу чтобы не было свойства "зеленые". Фильтр показывает все возможные свойства, какие есть.
|
s.rudko@100systems.com Rudko: 15.04.2021 11:19:06
А реально ли сделать чтобы на странице с брэндами отображался товар (Где свойство фильтруется с типом строка или список), и на детальной странице карточки товара отобразить брэнд из другого инфоблока (Где свойство всегда с типом привязки к элементам инфоблока) и чтобы это все с 1С взаимодействовало автоматически?
Старый способ вроде более подходит внешне, но насколько я понимаю, он не выгружается из 1С. Может я ошибаюсь, не подскажите, как решить данную задачу? |
Михаил Базаров: 15.04.2021 22:22:12
У вас есть инфоблок с каталогом, в котором есть свойство "Бренд", в нем указан производитель (не суть важно, строкой или прявязкой). Есть инфоблок с брендами, где бренды это элементы и их названия один в один как в элементах каталога. Что бы на странице бренда вывести все товары, в которых указан этот бренд использовали фильтр
Теперь надо, в элементе каталога сделать ссылку на бренд- что бы выводился в нем не зависимо от 1С В карточке, в нужном месте
В итоге перелинковали бренды и карточки каталога между собой. Не зависимо от 1С. Главное, что бы название бренда было написано один в один и в элементе каталога (в свойстве) и в названии бренда в инфоблоке с брендами. |
s.rudko@100systems.com Rudko: 16.04.2021 15:53:21
Я нашел место откуда выводится БРЭНД на детальную страницу товара. Вставил туда код, но он не сработал(
Я хотел задать вопрос, может я не верно понимаю. Я пытаюсь подтянуть прилинкованый БРЭНД по названию из другого инфоблока где БРЭНД - это элемент.
Вопрос: а где указывается инфоблок где БРЭНД - это элемент, чтобы код понимал откуда ему взять элемент БРЭНДА? |
Михаил Базаров: 16.04.2021 15:59:28
|
Гость: 11.07.2022 14:52:05
Доброго времени суток, фильтрует если прописать бренд в ручную, в чем может быть проблема?
$GLOBALS['arrBrandName'] = array("PROPERTY_133_VALUE"=>"Бренд" ; |
Михаил Базаров: 11.07.2022 23:07:40
Скорее всего, в названии бренда. Проверка идет по строгому совпадению названия. |
Гость: 02.08.2022 11:44:25
Михаил скажи вот мой вызов товаров бренда как описано в уроке и чуть выше я вызвал умный фильтр. Все отображается хорошо, но фильтр по какой то причине просто не хочет фильтровать. В чем может быть причина?
|
Михаил Базаров: 02.08.2022 22:48:06
В фильтре не указан раздел, из которого он должен брать параметры.
Нужно корректно указать SECTION_ID или SECTION_CODE распечатай массив из catalog.section что бы узнать точно. |
Руслан: 11.08.2023 13:06:28
Напрямую $arResult[] нельзя передать в component_epilog.php, нужно пробрасывать их из кэшируемой области (в result_modifier.php) так:
|
Михаил Базаров: 11.08.2023 13:31:24
Можно, просто не все.
Как минимум ['NAME'] и ['ID'] там уже есть. А вот если чего-то не хватает (например свойств) но очень надо - да, можно использовать:
|
Руслан: 27.09.2023 15:27:06
Есть минус, пагинация сломается, работать не будет, как мне кажется. По крайней мере, я не смог починить.
|
Гость: 02.12.2023 21:01:04
Здравствуйте, все делал как вы, добавил catalog.section и что он по итогу выводит:
ни изображений, ни цен, ни возможность добавить в корзину и указать количество |
Михаил Базаров: 03.12.2023 09:56:10
Это у вас не правильно настроенный или недоверстанный шаблон списка разделов. Выведете его без фильтрации, полностью настройте а потом уже можно добавить фильтры
|
Гость: 03.12.2023 12:16:02
В этом и проблема, я делал пока без фильтрации, полный вывод товаров, копировал этот же шаблон в другие места, не относящиеся к новостям- все показывает корректно. Новейший битрикс, php 8.2, параметр со старой совместимостью включен
|
Блог-note: заметки разработчика
Ajax форма обратной связи, реализация в битрикс
Иногда, на сайте требуется создать форму обратной связи, которая будет писать все данные в инфоблок. Способов реализации...
Создание раздела инфоблока при регистрации пользователя в Битрикс
Например вам нужно выводить информацию исключительно для определенного пользователя. Само собой, это можно сделать с пом...
Проверка на наличие элементов, текущего пользователя, в заданном инфоблоке.
Если стоит задача, определить наличие элементов созданных пользователем на сайте. Можно воспользоваться API: CUser и CIB...
Автоматическая загрузка каталогов из csv файлов в Битрикс
Если требуется настроить автоматический импорт каталогов из csv файлов, от поставщиков. В 1С-Битрикс, уже есть весь не...
Вывести товары в каталоге перебрав их по свойству и разделив на секции.
Задача: В каталоге, у товаров, есть свойство типа список с названием "Тип изделия" и кодом "TIP_IZDELIYA&...
Показать доступный остаток каждого товара в корзине 1С-Битрикс
Задача: показать остаток каждого товара в корзине 1С-Битрикс, что бы покупатель сразу знал предельное колличество товара...
Создание мобильного приложения на cordova, для любого сайта.
Если стоит задача разработки мобильного приложения для сайта, можете воспользоваться данной заметкой. Постарался сделать...
Если папка то применяем, проверка текущего раздела или подраздела
Иногда требуется применить особый стиль к определённой директории сайта или управлять выводом элементов на странице в за...
Свойство: привязка к Яндекс:Картам - вывести из нескольких элементов на одну карту
Предположим, что у вас есть инфоблок со свойством "Привязка к яндекс картам". В этом инфоблоке некоторое количество элем...