Всем привет, чего-то сам уже запутался, сижу 3 часа уже мучаю фильтрацию каталога. Буду очень благодарен если кто поможет разобраться)
Фильтр работает по типу исключения - т.е. по умолчанию выделены все пункты фильтра, кликаем по определённому пункту - товары соответствующие данному свойству скрываем.
есть 2 пользовательских свойства: type1 и type2- типа список.
per0 - либо 1, либо не передаём в фильтр
per1 - от 1-го до 4-х пришедших id свойств которые нужно скрыть
per2 - от 1-го до 4-х пришедших id свойств которые нужно показать
у товара может быть свойство и type1 и type2.
Собственно следующий код фильтра для компонента "catalog.section"
Собственно если у товара есть только свойство type2 всё фильтруется нормально, но вот если есть еще и type1 почему то всегда товары этого свойства не скрываются и показываются вместе с выбранными по type2, хотя формируется фильтр
Фильтр работает по типу исключения - т.е. по умолчанию выделены все пункты фильтра, кликаем по определённому пункту - товары соответствующие данному свойству скрываем.
есть 2 пользовательских свойства: type1 и type2- типа список.
per0 - либо 1, либо не передаём в фильтр
per1 - от 1-го до 4-х пришедших id свойств которые нужно скрыть
per2 - от 1-го до 4-х пришедших id свойств которые нужно показать
у товара может быть свойство и type1 и type2.
Собственно следующий код фильтра для компонента "catalog.section"
Код |
---|
$FILT_SERIES = array(); $arSeason = array("LOGIC" => "OR"); $arVal = array(); if(isset($_REQUEST['per1'])&&count($_REQUEST['per1'])>0){ foreach($_REQUEST['per1'] as $per1){ $arVal[] = $per1; } $arSeason['!PROPERTY_type2'] = $arVal; } $arVal = array(); if(isset($_REQUEST['per2'])&&count($_REQUEST['per2'])>0){ foreach($_REQUEST['per2'] as $per2){ if(isset($_REQUEST['per0'])){ $arVal["LOGIC"] = "AND"; $arVal['!PROPERTY_type1'] = array($_REQUEST['per0']); } $ar[] = $per2; $arVal['PROPERTY_type2'] = $ar; } $arSeason[] = $arVal; } $FILTER[] = $arSeason; |
Код |
---|
$FILT_SERIES = array('LOGIC' => 'OR', array('LOGIC' => 'AND', '!PROPERTY_type1' => array(1), 'PROPERTY_type2' => array("3")), '!PROPERTY_type2' => array(4,5,6)); |