Всем добрый день. Столкнулся с такой проблемой, есть каталог у которого есть торговые предложения, задача стояла такая, сделать галочку "выводить только в наличие", то есть фильтровать каталог по товарам у которых есть хотя бы одно ТП с количеством > 0. Если ставить стандартную галочку компонента catalog.section, что не нужно выводить товары, которых нет на складе, то нам просто выдастся товар с пустым массивом OFFERS, ок, можно было бы сделать проверку и не выводить этот пустой товар, но, тогда порушится вся постраничная навигация. Тогда я сделал фильтр перед подключением компонента с подзапросом, который проверяет как раз наличие ТП:
всё круто, выводятся товары только у которых есть на складе ТП. НО, при использовании умного фильтра не происходит фильтрация, я даже знаю, почему, да потому что умный фильтр тоже использует конструкцию ["=ID"] в фильтре и получается, что мой фильтр перезаписывает выборку умного фильтра. Вопрос, как их подружить? Может есть другой вариант фильтрации? У меня в голове вертится только один долгий и глупый вариант, написать обработчик на события, который бы сохранял в какое-нибудь поле товара общее количество ТП, которое бы суммировал.
| Код |
|---|
if($_REQUEST["in_stock"] == "Y"){
$arrFilter2 = array(
"=ID" => CIBlockElement::SubQuery("PROPERTY_CML2_LINK",
array(
"IBLOCK_ID" => DIALETA_OFFERS_IBLOCK_ID,
">CATALOG_QUANTITY" => 0
)
)
);
$HIDE_NOT_AVAILABLE = "Y";
}
|
всё круто, выводятся товары только у которых есть на складе ТП. НО, при использовании умного фильтра не происходит фильтрация, я даже знаю, почему, да потому что умный фильтр тоже использует конструкцию ["=ID"] в фильтре и получается, что мой фильтр перезаписывает выборку умного фильтра. Вопрос, как их подружить? Может есть другой вариант фильтрации? У меня в голове вертится только один долгий и глупый вариант, написать обработчик на события, который бы сохранял в какое-нибудь поле товара общее количество ТП, которое бы суммировал.