Меню
RSS
Связанные элементы в карточке товара, с помощью catalog.section
 
Связанные элементы в карточке товара, с помощью catalog.section

Достаточно часто, при разработке магазинов на битрикс, требуется выводить связанные элементы внутри карточки товара.
Данный блок, может называться как угодно и преследовать различные маркетинговые цели. Например, для блоков: Рекомендуем посмотреть, Аналоги, похожие товары итд.
 
Спасибо за то что делитель опытом. Хотелось бы понимать как можно сортировать элементы согласно иерархии выставленной в поле "привязка к элементам с автозаполнением" Конечно можно и через свойство сортировки попробовать унифицировать сортировку ( в моем случае это возможно) но может есть еще решение?
 
А что делать в ситуации, есть элемент, являющийся серией (например, гостиная) и в нее входят элементы, у которых указано свойство, что-то типа "Входит в комплект", равное символьному коду элемента, который является серией.

И в карточке серии нужно вывести все элементы, свойство которых равно символьному коду серии.

Туплю, похоже, но не могу понять, как это сделать.

Подскажите, если не сложно. :-)
 
Можно добавить в component_epilog.php
Код
$GLOBALS['arrFilter'] = array("PROPERTY_VHODIT_V_KOMPLEKT_VALUE"=> $arResult['ID']);

И вывести catalog.section с этим фильтром
Код
"USE_FILTER" => "Y",
"FILTER_NAME" => "arrFilter",


А, не дочитал. Связка по символьному коду, тогда:
Код
$GLOBALS['arrFilter'] = array("PROPERTY_VHODIT_V_KOMPLEKT_VALUE"=> $arResult['CODE']);
Изменено: Михаил Базаров - 28.04.2020 09:37:47
 
Не работает у меня! Выводит все товары а не указанные!
 
Здравствуйте, инструкция -просто огонь. именно то, что надо. у меня несколько вопросов по описанному способу:
1. если несколько полей и соответственно, блоков связанных товаров, то нужно эту операцию проделывать для каждого блока? или как-то их объединить?
2. у меня все равно вывалились все товары, а если ставить условие Если не пустая переменная, то пустое выдаётся. бьюсь второй день.
 
Цитата
Елена написал:
Здравствуйте, инструкция -просто огонь. именно то, что надо. у меня несколько вопросов по описанному способу:
1. если несколько полей и соответственно, блоков связанных товаров, то нужно эту операцию проделывать для каждого блока? или как-то их объединить?
2. у меня все равно вывалились все товары, а если ставить условие Если не пустая переменная, то пустое выдаётся. бьюсь второй день.

Немного улучшил заметку.
Проверьте, если вообще что-нибудь в массиве для фильтра.
Код
print_r($arrayLinks);
 
все-таки пришло время добить эту задачу на проекте. и в списке по проверке print_r($arrayLinks); не выводится ничего, в то же время при запросе

<?foreach($arResult["PROPERTIES"]["ANALOG"]["VALUE"] as $analog):?>
<?$res = CIBlockElement::GetByID($analog);?>
<?if($ar_res = $res->GetNext())?>
<li><b><a href='<?=$ar_res["DETAIL_PAGE_URL"];?>'><?=$ar_res["NAME"];?></a></b></li>
<?endforeach;?>

выводится все корректно. но так вручную цеплять странно. компонент catalog.item в такую структуру для меня сложно вставить, а все шаблоны сделаны и работают, если без фильтров.
техподдержка битрикса тоже не может помочь. не работает ни компонент связанных товаров, который рекомендован битриксом, ни этот  вариант, а он гораздо элегантнее.

я уже всякое попробовала. даже переименовала свойство в исходное как в примере - не работает. может быть, не в компонент эпилог это надо ставить? в общем, я грущу. у кого-то все товары выводит, у меня - вообще ни одного. хз как так.  
 
Цитата
Елена написал:
я уже всякое попробовала. даже переименовала свойство в исходное как в примере - не работает. может быть, не в компонент эпилог это надо ставить? в общем, я грущу. у кого-то все товары выводит, у меня - вообще ни одного. хз как так.  


Скиньте прямо сюда весь шаблон, посмотрю - может быть увижу что-то.
Буквально вчера этим же способом воспользовался, все работает.
 
хочу загрузить, но и на архив zip, и на php пишут мне - неверный тип файла. и txt не грузится. отправила на почту)  
 
Добрый день. Подскажите, где находится шаблон вывода. Все связанные элементы отображаются в одну колонку
 
Просто используете любой из своих шаблонов или создайте новый на основе встроенных.
Изменено: Михаил Базаров - 09.03.2025 16:43:11
 
Все работает, спасибо, только не понял почему мы весь код пишем в component_epilog.php, ведь тогда этот блок выведется в конце сайта, а мне надо было где-то по середине. Поэтому весь код вставил в template.php детальной страницы.
Делал на компоненте news.detail, работает)))
 
И в самом конце проверка
if (count($arrayLinks) > 0) {
... Фильтр и catalog.section...
}
У меня почему-то если нет связанных товаров, в массиве одно значение:
array(1) { [0]=> NULL }

Надо чуть по-другому будет проверить. Возможно это я чет не так конечно сделал.
 
Да, пока не разберетесь можно проверять на больше одного

Код
if (count($arrayLinks) > 1) {
... Фильтр и catalog.section...
}
 
Подскажите, пожалуйста, Михаил, как можно решить обратную задачу.
Т.е. связь в одну сторону настроена, а теперь у элемента на который мы ссылаемся (который привязали) как найти все элементы, которые на него ссылаются?
Подозреваю, что нужен фильтр инфоблока по дочерним элементам, верно? Подскажите как его организовать если может быть несколько дочерних элементов и на один документ может быть несколько ссылок?  
 
Пока ни чего умнее в голову не приходит с ходу.
Но, видимо придется в каждом товаре проходиться по всем товарам каталога (а если их много это так себе решение) в поисках - а не встречается ли текущий товар в свойстве привязки любого из товаров каталога.
 
Здравствуйте.

В шаблонах news попробовал связать элементы инфоблоков, все нормально работает. НО... а почему в news.list выводятся все записи сразу в кучу? ))
 
В news.list другой ключ массива, там поменяйте его (если правильно понял суть проблемы)
Изменено: Михаил Базаров - 09.03.2025 16:42:09
Читают тему
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить файлы
 
Поблагодарить и поддержать:
Или подписаться на boosty канал: Видео на Bst

Блог-note: заметки разработчика

Добавление и удаление из сравнения на AJAX: Битрикс

Рецепт лежал у меня в закромах, почти о нем и забыл, но тут подвернулся под руку- решил опубликовать. Скажу сразу, данно...

Запретить указание количества товаров, добавляемого в корзину, в определенных разделах каталога.

Задача состоит в том, чтобы запретить указание количества товара, добавляемого в корзину, в определенных разделах катало...

Подключение jquery из ядра битрикс и объединение своих скриптов в один файл

Если используете большое количество js скриптов на сайте. Например: фансибокс, всяческие галереи и прочее- то таких внеш...

Получить множественное пользовательское поле раздела. Значения множественного UF_ поля через API

Задача: У разделов инфоблока есть множественное поле типа список. Зная ID раздела, нужно получить и вывести всю информац...

Самодельная форма добавления элемента на API Битрикс

Компонент iblock.element.add.form написан таким образом, что вы не сможете (не попотев изрядно и не используя js) как уг...

Вывести разделы инфоблока в которых находится элемент Битрикс

Если нужно в карточке товара или новости, вывести структуру разделов в котором находится элемент. С одной стороны, это у...

Увидеть файл заказов который передаст Битрикс в 1С

Для диагностики обмена заказов, интернет-магазина на 1С Битрикс с 1С Управление Торговлей, нужно увидеть xml файл с зака...

Объединить отдельные поля ФИО в одно свойство при оформлении заказа.

Пользователь, при оформлении заказа, заполняет три отдельных поля с фамилией, именем и отчеством. Нам нужно сохранить эт...

Очистить брошенные корзины с помощью API 1С-Битрикс

Задача: в интернет-магазине накапливается большое количество брошенных корзин, нужно их очистить. Включая и корзины заре...