Всем привет, чего-то сам уже запутался, сижу 3 часа уже мучаю фильтрацию каталога. Буду очень благодарен если кто поможет разобраться)
Фильтр работает по типу исключения - т.е. по умолчанию выделены все пункты фильтра, кликаем по определённому пункту - товары соответствующие данному свойству скрываем.
есть 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;
|
Собственно если у товара есть только свойство
type2 всё фильтруется нормально, но вот если есть
еще и
type1 почему то всегда товары этого свойства не скрываются и показываются вместе с выбранными по
type2, хотя формируется фильтр
| Код |
|---|
$FILT_SERIES = array('LOGIC' => 'OR', array('LOGIC' => 'AND', '!PROPERTY_type1' => array(1), 'PROPERTY_type2' => array("3")), '!PROPERTY_type2' => array(4,5,6));
|