Достаточно частая задачка для каталога или интернет-магазина: вывести список производителей с подробными описаниями, а так же в подробном описании производителя или бренда вывести все товары, у которых заполнено свойство "Производитель." Расскажу как это сделать
Вывести производителей на сайте с отбором его товаров из каталога
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С выгружено не правильно из-за чего не правильно строились адреса у некоторых товаров.
|
|
|
22.12.2017 14:39:53
Доброго времени суток.
Михаил, подскажите пожалуйста, как быть если в свойствах товара бренды указаны не строкой, а справочником? Не получается правильно написать запрос. $GLOBALS['arrBrandName'] = array("PROPERTY_ИД_VALUE"=>$brandName); - это для строкового параметра, а как сделать для справочника? У меня соответственно выводятся все товары. Заранее благодарен. |
|
|
22.12.2017 18:16:58
|
|||
|
20.01.2018 06:23:27
Приветствую!
Михаил, спасибо за интересное видео, но есть следующая задача надеюсь сможешь помочь) Необходимо вывести страницу брендов, чтобы отображались не только элементы каталога, но и список всех доступных разделов в которых есть отсортированные элементы. ЧПУ необходимо настроить для разделов brands/section1/, brands/section2/ и тд. Для элементов ЧПУ catalog/section/element/ Есть решение, какие компоненты использовать? и структуру ЧПУ? Заранее спасибо! |
|
|
20.01.2018 10:30:06
То есть, бренды должны стать разделами каталога- это самое идеальное, меньше манипуляций делать дальше. |
|||
|
25.01.2018 10:31:23
|
|||||
|
07.03.2018 12:09:18
А можно ли так сделать если из 1С приходит на сайт свойство Производитель с кодом CML2_MANUFACTURER только с типом Список?
|
|
|
07.03.2018 15:12:47
|
|||
|
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. Михаил может сможете помочь?
|
|
|
12.10.2020 22:55:32
Александр, такая же беда с брендами на решении от альфы. Не могу настроить фильтр по свойству, чтобы выводились и разделы и товары в которых есть товары с этими брендами. Вы нашли какое-то решение?
|
|
|
14.10.2020 13:50:50
![]() |
|||
|
09.12.2020 17:25:44
Подскажите пожалуйста, а как настроить умный фильтр на странице производителя? У меня перед выводом товаров производителя стоит умный фильтр, но в свойствах отображаются все бренды, хотя они на этой странице не нужны. Плюс попадают свойства с пустыми значениями. Как-то можно настроить умный фильтр, чтобы в зависимости от производителя пропадали пустые свойства из умного фильтра?
Так фильтруется каталог по бренду:
|
|||||||
|
10.12.2020 04:10:30
Нужно в умный фильтр сразу передать производителя. То есть, что-бы текущий производитель был выбран, в нем, сразу- при загрузке страницы.
Можно получить ID значения свойства с производителем и js-ом кликнуть по нужному чекбоксу или выпадающему списку.
Изменено: |
|
|
10.12.2020 07:18:21
Он уже передан в умном фильтре. В catalog.filter и smart.filter записано "FILTER_NAME" => "arrFilterBrand". Фильтр работает с товарами производителя. Внутри фильтра остаются пустые свойства. Например, есть в каталоге 100 товаров, 50 товаров синих, 50 товаров зеленых. Перехожу на страницу конкретного производителя, в нем остается 50 синих товаров, но в умном фильтре можно выбрать синие и зеленые. Я хочу чтобы не было свойства "зеленые". Фильтр показывает все возможные свойства, какие есть.
|
|
|
15.04.2021 11:19:06
А реально ли сделать чтобы на странице с брэндами отображался товар (Где свойство фильтруется с типом строка или список), и на детальной странице карточки товара отобразить брэнд из другого инфоблока (Где свойство всегда с типом привязки к элементам инфоблока) и чтобы это все с 1С взаимодействовало автоматически?
Старый способ вроде более подходит внешне, но насколько я понимаю, он не выгружается из 1С. Может я ошибаюсь, не подскажите, как решить данную задачу? |
|||
|
15.04.2021 22:22:12
У вас есть инфоблок с каталогом, в котором есть свойство "Бренд", в нем указан производитель (не суть важно, строкой или прявязкой). Есть инфоблок с брендами, где бренды это элементы и их названия один в один как в элементах каталога. Что бы на странице бренда вывести все товары, в которых указан этот бренд использовали фильтр
Теперь надо, в элементе каталога сделать ссылку на бренд- что бы выводился в нем не зависимо от 1С В карточке, в нужном месте
В итоге перелинковали бренды и карточки каталога между собой. Не зависимо от 1С. Главное, что бы название бренда было написано один в один и в элементе каталога (в свойстве) и в названии бренда в инфоблоке с брендами.
Изменено: |
|||||||
|
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: заметки разработчика
Связанные элементы в карточке товара, с помощью catalog.section
Достаточно часто, при разработке магазинов на битрикс, требуется выводить связанные элементы внутри карточки товара. Д...
Менеджер событий (EventManager) в 1C-Битрикс
Менеджер событий (EventManager) — это централизованный механизм регистрации, обработки и управления событиями. О...
Сниппеты типографики bootstrap, для Битрикс
Если вы подключили bootstrap к своему сайту, или сверстали весь шаблон, подключив bootstrap из ядра битрикс. Имеет смысл...
Получить множественное пользовательское поле раздела. Значения множественного UF_ поля через API
Задача: У разделов инфоблока есть множественное поле типа список. Зная ID раздела, нужно получить и вывести всю информац...
Создание раздела инфоблока при регистрации пользователя в Битрикс
Например вам нужно выводить информацию исключительно для определенного пользователя. Само собой, это можно сделать с пом...
Обновление цен и остатков из текстового файла, в каталоге 1C-Битрикс.
Задача: прочитать txt-файл с ценами и остатками, который выгружает программа учета по FTP, и обновить эти данные в катал...
Отфильтровать товары бренда и вывести по разделам каталога
Задача: на странице бренда, который выводится компонентом новостей, нужно показать все товары этого бренда из каталога. ...
Заполнить коэффициент единицы измерения (MEASURE_RATIO) из свойства элемента
Задача: Каталог наполняется из 1С, но 1С не передает коэффициент единицы измерения (особенность конкретной 1С, но во...
Если товар в корзине, поменять кнопку на "В корзине" в новом шаблоне 1С-Битрикс
Ранее я уже делал заметку на эту тему. Тогда, мы меняли значение input-а при добавлении товара в корзину в старых шаблон...