Достаточно частая задачка для каталога или интернет-магазина: вывести список производителей с подробными описаниями, а так же в подробном описании производителя или бренда вывести все товары, у которых заполнено свойство "Производитель." Расскажу как это сделать
Вывести производителей на сайте с отбором его товаров из каталога
Михаил Базаров: 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, параметр со старой совместимостью включен
|
Сквозная по всем записям блога, видеоурокам и темам форума
10 000 руб./мес.Блог-note: заметки разработчика
Если папка то применяем, проверка текущего раздела или подраздела
Иногда требуется применить особый стиль к определённой директории сайта или управлять выводом элементов на странице в за...
Удалить всех пользователей которые не делали заказов в магазине 1С-Битрикс
Задача: сайт проработал 7 лет и все время на нем была открытая регистрация, создано много мертвых учетных записей (б...
Memcached на сайте под управлением битрикс, при использовании Веб Окружения Битрикс
Если вам важна скорость отдачи сайта, а у вашего сервера медленный диск для использования кеша на файлах. Можно кеширова...
Выбор основного раздела для элемента инфоблока в 1С-Битрикс
Проблема: при привязке элемента инфоблока к нескольким разделам возникают дубли его детальной страницы, в зависимости от...
Вывести минимальную и максимальную цену в разделе каталога Битрикс.
Что бы вывести минимальную и максимальную стоимость товаров, из каталога 1С-Битрикс, достаточно получить все товары мето...
Вывести компонент новостей на страницу в Битрикс
Посмотрел Яндекс метрику на свой сайт, и решил что буду частенько писать сюда именно то, что ищут люди. Итак за последню...
Дать пользователю возможность быстро отредактировать материал
На одном из разрабатываемых сайтов, пользователи формируют его контент. После регистрации, становится доступен персональ...
Скопировать номер телефона из поля пользователя в телефон для регистрации
Задача, на конкретном сайте: раньше все пользователи регистрировались по стандартному режиму, через логин(e-mail) и паро...
Показ страницы сайта в боковом слайдере, на примере всплывающей формы обратной связи.
Если вы хотите сделать подгрузку любой страницы сайта в боковой слайдер, для этого в битриксе есть метод BX.SidePanel.In...