Вывожу элементы инфоблока примерно так:
[CODE]
$arFilter = Array("IBLOCK_ID"=>1, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y");
$arSelect = Array("ID", "NAME", "DETAIL_PAGE_URL", "PREVIEW_PICTURE", "PRICE_base");
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>12), $arSelect);
$res->NavStart(12);
while($ob = $res->GetNextElement())
{
$arFields = $ob->GetFields();
$arProperty = $ob->GetProperties();
//здесь еще условия типа
if ($arProperty["S_1"]["VALUE"] > 0 || $arProperty["S_2"]["VALUE"] > 0) {
echo $arFields["NAME"];
}
}
$res->NavPrint();
[/CODE]
Думаю суть понятна, нужно выводить элементы и фильтровать по свойствам используя "ИЛИ".
Но при такой конструкции "ломается" полностью навигация. То есть например CIBlockElement::GetList возвращает 20 элементов, а при выводе по условию 10 отсеиваются, а навигация выводится как для 20 элементов.
Как решить эту проблему?
[CODE]
$arFilter = Array("IBLOCK_ID"=>1, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y");
$arSelect = Array("ID", "NAME", "DETAIL_PAGE_URL", "PREVIEW_PICTURE", "PRICE_base");
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>12), $arSelect);
$res->NavStart(12);
while($ob = $res->GetNextElement())
{
$arFields = $ob->GetFields();
$arProperty = $ob->GetProperties();
//здесь еще условия типа
if ($arProperty["S_1"]["VALUE"] > 0 || $arProperty["S_2"]["VALUE"] > 0) {
echo $arFields["NAME"];
}
}
$res->NavPrint();
[/CODE]
Думаю суть понятна, нужно выводить элементы и фильтровать по свойствам используя "ИЛИ".
Но при такой конструкции "ломается" полностью навигация. То есть например CIBlockElement::GetList возвращает 20 элементов, а при выводе по условию 10 отсеиваются, а навигация выводится как для 20 элементов.
Как решить эту проблему?