Меню
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 не грузится. отправила на почту)  
 
Добрый день. Подскажите, где находится шаблон вывода. Все связанные элементы отображаются в одну колонку
 
Цитата
Гость написал: Добрый день. Подскажите, где находится шаблон вывода. Все связанные элементы отображаются в одну колонку

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

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

Код
if (count($arrayLinks) > 1) {
... Фильтр и catalog.section...
}
 
Здравствуйте! Вот страница https://mypricep.ru/novaya-stranitsa.php на которой пытаюсь вывести сопутствующие товары. Массив с ID сопутсвующих товаров выводит Array ( [0] => 3163 [1] => 3164 [2] => 3165 [3] => 3166 [4] => 3167 [5] => 3168 [6] => 3136 [7] => 3148 [8] => 3149 [9] => 3150 [10] => 3151 [11] => 3152 [12] => 3153 [13] => 3154 [14] => 3155 [15] => 3156 [16] => 3157 [17] => 3158 [18] => 3159 [19] => 3160 [20] => 3161 [21] => 3140 [22] => 3162 ), но фильтр к компоненту section не применяется. В чем может быть проблема?
 
Цитата
Гость написал:
Здравствуйте! Вот страница https://mypricep.ru/novaya-stranitsa.php на которой пытаюсь вывести сопутствующие товары. Массив с ID сопутсвующих товаров выводит

Array ( [0] => 3163 [1] => 3164 [2] => 3165 [3] => 3166 [4] => 3167 [5] => 3168 [6] => 3136 [7] => 3148 [8] => 3149 [9] => 3150 [10] => 3151 [11] => 3152 [12] => 3153 [13] => 3154 [14] => 3155 [15] => 3156 [16] => 3157 [17] => 3158 [18] => 3159 [19] => 3160 [20] => 3161 [21] => 3140 [22] => 3162 ), но фильтр к компоненту section не применяется. В чем может быть проблема?                
На странице вывел компонент таким образом.
Код
<?
$GLOBALS['arrFilterLinked'] = array('=ID' => $arrayLinks);
$APPLICATION->IncludeComponent(
   "bitrix:catalog.section", 
   ".default", 
   array(
      "COMPONENT_TEMPLATE" => ".default",
      "IBLOCK_TYPE" => "catalog",
      "IBLOCK_ID" => "5",
      "SECTION_ID" => $_REQUEST["SECTION_ID"],
      "SECTION_CODE" => "",
      "SECTION_USER_FIELDS" => array(
         0 => "",
         1 => "",
      ),
      "FILTER_NAME" => "arrFilterLinked",
      "INCLUDE_SUBSECTIONS" => "A",
      "SHOW_ALL_WO_SECTION" => "N",
      "CUSTOM_FILTER" => "{\"CLASS_ID\":\"CondGroup\",\"DATA\":{\"All\":\"AND\",\"True\":\"True\"},\"CHILDREN\":[]}",
      "HIDE_NOT_AVAILABLE" => "N",
      "HIDE_NOT_AVAILABLE_OFFERS" => "N",
      "ELEMENT_SORT_FIELD" => "sort",
      "ELEMENT_SORT_ORDER" => "asc",
      "ELEMENT_SORT_FIELD2" => "id",
      "ELEMENT_SORT_ORDER2" => "desc",
      "OFFERS_SORT_FIELD" => "sort",
      "OFFERS_SORT_ORDER" => "asc",
      "OFFERS_SORT_FIELD2" => "id",
      "OFFERS_SORT_ORDER2" => "desc",
      "PAGE_ELEMENT_COUNT" => "18",
      "LINE_ELEMENT_COUNT" => "3",
      "PROPERTY_CODE" => array(
         0 => "",
         1 => "",
      ),
      "PROPERTY_CODE_MOBILE" => array(
      ),
      "OFFERS_FIELD_CODE" => array(
         0 => "",
         1 => "",
      ),
      "OFFERS_PROPERTY_CODE" => array(
         0 => "",
         1 => "",
      ),
      "BACKGROUND_IMAGE" => "-",
      "TEMPLATE_THEME" => "blue",
      "PRODUCT_ROW_VARIANTS" => "[{&#39;VARIANT&#39;:&#39;2&#39;,&#39;BIG_DATA&#39;:false},{&#39;VARIANT&#39;:&#39;2&#39;,&#39;BIG_DATA&#39;:false},{&#39;VARIANT&#39;:&#39;2&#39;,&#39;BIG_DATA&#39;:false},{&#39;VARIANT&#39;:&#39;2&#39;,&#39;BIG_DATA&#39;:false},{&#39;VARIANT&#39;:&#39;2&#39;,&#39;BIG_DATA&#39;:false},{&#39;VARIANT&#39;:&#39;2&#39;,&#39;BIG_DATA&#39;:false}]",
      "ENLARGE_PRODUCT" => "STRICT",
      "PRODUCT_BLOCKS_ORDER" => "price,props,sku,quantityLimit,quantity,buttons",
      "SHOW_SLIDER" => "Y",
      "SLIDER_INTERVAL" => "3000",
      "SLIDER_PROGRESS" => "N",
      "PRODUCT_DISPLAY_MODE" => "N",
      "ADD_PICT_PROP" => "-",
      "LABEL_PROP" => array(
      ),
      "PRODUCT_SUBSCRIPTION" => "Y",
      "SHOW_DISCOUNT_PERCENT" => "N",
      "SHOW_OLD_PRICE" => "N",
      "SHOW_MAX_QUANTITY" => "N",
      "SHOW_CLOSE_POPUP" => "N",
      "MESS_BTN_BUY" => "Купить",
      "MESS_BTN_ADD_TO_BASKET" => "В корзину",
      "MESS_BTN_SUBSCRIBE" => "Подписаться",
      "MESS_BTN_DETAIL" => "Подробнее",
      "MESS_NOT_AVAILABLE" => "Нет в наличии",
      "MESS_NOT_AVAILABLE_SERVICE" => "Недоступно",
      "RCM_TYPE" => "personal",
      "RCM_PROD_ID" => $_REQUEST["PRODUCT_ID"],
      "SHOW_FROM_SECTION" => "N",
      "SECTION_URL" => "",
      "DETAIL_URL" => "",
      "SECTION_ID_VARIABLE" => "SECTION_ID",
      "SEF_MODE" => "N",
      "AJAX_MODE" => "N",
      "AJAX_OPTION_JUMP" => "N",
      "AJAX_OPTION_STYLE" => "Y",
      "AJAX_OPTION_HISTORY" => "N",
      "AJAX_OPTION_ADDITIONAL" => "",
      "CACHE_TYPE" => "A",
      "CACHE_TIME" => "36000000",
      "CACHE_GROUPS" => "Y",
      "SET_TITLE" => "Y",
      "SET_BROWSER_TITLE" => "Y",
      "BROWSER_TITLE" => "-",
      "SET_META_KEYWORDS" => "Y",
      "META_KEYWORDS" => "-",
      "SET_META_DESCRIPTION" => "Y",
      "META_DESCRIPTION" => "-",
      "SET_LAST_MODIFIED" => "N",
      "USE_MAIN_ELEMENT_SECTION" => "N",
      "ADD_SECTIONS_CHAIN" => "N",
      "CACHE_FILTER" => "N",
      "ACTION_VARIABLE" => "action",
      "PRODUCT_ID_VARIABLE" => "id",
      "PRICE_CODE" => array(
      ),
      "USE_PRICE_COUNT" => "N",
      "SHOW_PRICE_COUNT" => "1",
      "PRICE_VAT_INCLUDE" => "Y",
      "CONVERT_CURRENCY" => "N",
      "BASKET_URL" => "/personal/basket.php",
      "USE_PRODUCT_QUANTITY" => "N",
      "PRODUCT_QUANTITY_VARIABLE" => "quantity",
      "ADD_PROPERTIES_TO_BASKET" => "Y",
      "PRODUCT_PROPS_VARIABLE" => "prop",
      "PARTIAL_PRODUCT_PROPERTIES" => "N",
      "PRODUCT_PROPERTIES" => array(
      ),
      "OFFERS_CART_PROPERTIES" => array(
      ),
      "ADD_TO_BASKET_ACTION" => "ADD",
      "DISPLAY_COMPARE" => "N",
      "USE_ENHANCED_ECOMMERCE" => "N",
      "PAGER_TEMPLATE" => ".default",
      "DISPLAY_TOP_PAGER" => "N",
      "DISPLAY_BOTTOM_PAGER" => "Y",
      "PAGER_TITLE" => "Товары",
      "PAGER_SHOW_ALWAYS" => "N",
      "PAGER_DESC_NUMBERING" => "N",
      "PAGER_DESC_NUMBERING_CACHE_TIME" => "36000",
      "PAGER_SHOW_ALL" => "N",
      "PAGER_BASE_LINK_ENABLE" => "N",
      "LAZY_LOAD" => "N",
      "MESS_BTN_LAZY_LOAD" => "Показать ещё",
      "LOAD_ON_SCROLL" => "N",
      "SET_STATUS_404" => "N",
      "SHOW_404" => "N",
      "MESSAGE_404" => "",
      "COMPATIBLE_MODE" => "N",
      "DISABLE_INIT_JS_IN_COMPONENT" => "N"
   ),
   false
);?>
Изменено: Михаил Базаров - 22.09.2023 16:55:58
 
Попробовал echo '<pre>'.print_r($GLOBALS['arrFilterLinked'], true).'</pre>'; выводит пустоту. т.е id не в global не уходят.
 
Подскажите, пожалуйста, Михаил, как можно решить обратную задачу.
Т.е. связь в одну сторону настроена, а теперь у элемента на который мы ссылаемся (который привязали) как найти все элементы, которые на него ссылаются?
Подозреваю, что нужен фильтр инфоблока по дочерним элементам, верно? Подскажите как его организовать если может быть несколько дочерних элементов и на один документ может быть несколько ссылок?  
 
Пока ни чего умнее в голову не приходит с ходу.
Но, видимо придется в каждом товаре проходиться по всем товарам каталога (а если их много это так себе решение) в поисках - а не встречается ли текущий товар в свойстве привязки любого из товаров каталога.
Читают тему (гостей: 1)
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить файлы
 
Поблагодарить и поддержать:
Или подписаться на boosty канал: Видео на Bst
Сайт в режиме тех обслуживания

Сообщения форума и комментарии не сохраняются

Возвращайтесь после 12-го января

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

Удалить половину элементов инфоблока с помощью API

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

Фильтрация разделов каталога с помощью умного фильтра

Задача: В каталоге выводится умный фильтр, нужно сделать так чтобы он применялся не только к товарам но и к компоненту &...

Бонус на внутренний счет пользователя по информации из 1С

Задача: 1С-Предприятие каждый день выгружает HL справочник на сайт с количеством бонусов контрагента в виде "XML-ID...

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

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

Сравнение двух типов цен для иммитации системы скидок, в Битрикс

Встала задачка, иммититровать систему скидок в интернет магазине на Битрикс. Из 1С-УТ, на сайт, выгружается два типа цен...

Вывести новости из конкретного раздела инфоблока Битрикс

Бывает что требуется вывести конкретные новости или статьи из одного раздела инфоблока в Битрикс, для этого потребуется ...

Отключить поиск по описаниям товаров в Битрикс

Иногда, нужно отключить поиск по описаниям анонсов и детальному описанию товаров, при разработке сайтов на Битрикс. Сдел...

Цвета из справочника Highload блоков в списке новостей

На сайте выводятся новости с помощью компонента news.list, при этом у новостей есть свойство "Цвета" типа &quo...

Cordova, ввод в input под диктовку. Голосовой поиск в мобильном приложении.

Итак, задачка: реализовать голосовой поиск в мобильном приложении на Cordova. По сути, нам нужно захватить речь с микроф...