Меню
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
Читают тему (гостей: 1)
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить файлы
 
Поблагодарить и поддержать:
Или подписаться на boosty канал: Видео на Bst

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

Глобальные фильтры на всякие случаи жизни

Глобальный фильтр, нужен чаще всего, для вывода определенных элементов, из общего массива, инфорблока. Спектр применяем...

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

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

Заполнить свойство инфоблока ценой из торгового каталога

Если вам по какой-то причине нужно скопировать цену товара в свойство этого же инфоблока. Например, для вывода старой це...

Умный фильтр на главной странице Битрикс

Редкая но востребованная задачка- это вывести компонент "умный фильтр" на главную страницу магазина на Битрикс. При этом...

Помечаем новинки лейблом в каталоге битрикс

Достаточно часто, при разработке каталога товаров или интернет магазина на системе управления Битрикс, встает задача как...

Установить цену товара из свойства инфоблока

На одном из проектов, нужно было единоразово заполнить цены товаров из свойства инфоблока. Сделать это можно через API, ...

Добавление в избранное или отложенные, на AJAX из карточки товара

В этой заметке рассакажу как добавлять товары в "Отложенные", для иммитации функционала "Избранное". Для этого будем исп...

Удаление недоступных для заказа товаров из корзины

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

Увеличение диска на готовой виртуальной машине Битрикс

Как всем известно, на официальном сайте 1С-битрикс можно скачать готовую виртуальную машину максимально сконфигурированн...