Здравствуйте, уважаемые программисты. Столкнулась с проблемой - прошу вас помочь разобраться в чем дело и подсказать что делать. Ситуация:
Есть два ИБ:
ИБ "Акции"
ИБ "Товары".
В ИБ "Акции" у элементов есть свойство "Товары по акции" (тип - привязка к элементам, множественное). В данном свойстве я указываю id интересующих меня товаров (элементов ИБ "Товары"), относящихся к текущей акции.
Далее, зная id текущей акции я получаю значения свойства "Товары по акции" и формирую массив $arResult['PRODUCT_ID'] этих значений.
Итого имею массив $arResult['PRODUCT_ID'], содержащий id товаров по акции.
Товары на страницу выводятся с помощью компонента catalog.section. Перед вызовом catalog.section я определяю фильтр:
$GLOBALS['arrFilter']['ID'] = $arResult['PRODUCT_ID']; - то есть я хочу выводить только те товары, Id которых соответствует idшникам из $arResult['PRODUCT_ID'].
К чему я хочу прийти: если у акции есть товар - отображай, если нет - не выводи ничего.
Проблема заключается в том, что если к акции привязан хотя бы один элемент - фильтр отрабатывает корректно и catalog.section выводит этот один единственный товар. Но! если к акции не привязан ни один товар и получается что свойство "Товары по акции" пустое, то catalog.section выводит вообще все товары из каталога.
Вопрос почему так, ведь условие в фильтре $GLOBALS['arrFilter']['ID'] = $arResult['PRODUCT_ID']; не отработает и catalog.section ничего не должен вывести?
Как я сейчас решаю данную проблему перед вызовом catalog.section if-ом проверяю на пустоту $arResult['PRODUCT_ID']. Но мне кажется можно обойтись без этого, грамотно используя фильтр.
Также (прошу обратить внимание на скрин) почему такое больше количество запросов и время генерации у компонента? (для примера catalog.section вывел лишь один элемент)
Возможно, я чего -то не понимаю и есть какие-то нюансы, которые просто не учитываются мной. Заранее извиняюсь, если вопрос этот покажется глупым.
Спасибо.
Есть два ИБ:
ИБ "Акции"
ИБ "Товары".
В ИБ "Акции" у элементов есть свойство "Товары по акции" (тип - привязка к элементам, множественное). В данном свойстве я указываю id интересующих меня товаров (элементов ИБ "Товары"), относящихся к текущей акции.
Далее, зная id текущей акции я получаю значения свойства "Товары по акции" и формирую массив $arResult['PRODUCT_ID'] этих значений.
Итого имею массив $arResult['PRODUCT_ID'], содержащий id товаров по акции.
Товары на страницу выводятся с помощью компонента catalog.section. Перед вызовом catalog.section я определяю фильтр:
$GLOBALS['arrFilter']['ID'] = $arResult['PRODUCT_ID']; - то есть я хочу выводить только те товары, Id которых соответствует idшникам из $arResult['PRODUCT_ID'].
К чему я хочу прийти: если у акции есть товар - отображай, если нет - не выводи ничего.
Проблема заключается в том, что если к акции привязан хотя бы один элемент - фильтр отрабатывает корректно и catalog.section выводит этот один единственный товар. Но! если к акции не привязан ни один товар и получается что свойство "Товары по акции" пустое, то catalog.section выводит вообще все товары из каталога.
Вопрос почему так, ведь условие в фильтре $GLOBALS['arrFilter']['ID'] = $arResult['PRODUCT_ID']; не отработает и catalog.section ничего не должен вывести?
Как я сейчас решаю данную проблему перед вызовом catalog.section if-ом проверяю на пустоту $arResult['PRODUCT_ID']. Но мне кажется можно обойтись без этого, грамотно используя фильтр.
Также (прошу обратить внимание на скрин) почему такое больше количество запросов и время генерации у компонента? (для примера catalog.section вывел лишь один элемент)
Возможно, я чего -то не понимаю и есть какие-то нюансы, которые просто не учитываются мной. Заранее извиняюсь, если вопрос этот покажется глупым.
Спасибо.