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