Достаточно частая задачка для каталога или интернет-магазина: вывести список производителей с подробными описаниями, а так же в подробном описании производителя или бренда вывести все товары, у которых заполнено свойство "Производитель." Расскажу как это сделать
Вывести производителей на сайте с отбором его товаров из каталога
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: заметки разработчика
Глобальные фильтры на всякие случаи жизни
Глобальный фильтр, нужен чаще всего, для вывода определенных элементов, из общего массива, инфорблока. Спектр применяем...
Самодельная форма добавления элемента на API Битрикс
Компонент iblock.element.add.form написан таким образом, что вы не сможете (не попотев изрядно и не используя js) как уг...
Заполнить свойство инфоблока ценой из торгового каталога
Если вам по какой-то причине нужно скопировать цену товара в свойство этого же инфоблока. Например, для вывода старой це...
Умный фильтр на главной странице Битрикс
Редкая но востребованная задачка- это вывести компонент "умный фильтр" на главную страницу магазина на Битрикс. При этом...
Помечаем новинки лейблом в каталоге битрикс
Достаточно часто, при разработке каталога товаров или интернет магазина на системе управления Битрикс, встает задача как...
Установить цену товара из свойства инфоблока
На одном из проектов, нужно было единоразово заполнить цены товаров из свойства инфоблока. Сделать это можно через API, ...
Добавление в избранное или отложенные, на AJAX из карточки товара
В этой заметке рассакажу как добавлять товары в "Отложенные", для иммитации функционала "Избранное". Для этого будем исп...
Удаление недоступных для заказа товаров из корзины
Задача: пользователи магазина могу наполнять корзины, но не доходить до оформления заказа. Такие корзины считаются броше...
Увеличение диска на готовой виртуальной машине Битрикс
Как всем известно, на официальном сайте 1С-битрикс можно скачать готовую виртуальную машину максимально сконфигурированн...