Нужен программист!
Самым простым и удобным способом будет создание свойства привязки к регионам у товаров.
А на странице, где происходит вызов компонента, который выводит товары, прописать массив фильтрации.
Разделение товаров через множественную привязку к регионам
Если вы хотите показывать один и тот же товар сразу в нескольких регионах.
Создаёте точно такое же свойство, только указываете у него галочку "Множ.". Теперь в админке вы можете указывать несколько регионов для товаров.
Массив же фильтра будет генерироваться совершенно другим способом, код ниже.
<?php global $arrFilter; $res = CIBlockElement::GetList( Array(), Array( "IBLOCK_ID" => {нужный инфоблок}, "PROPERTY_REGION" => $_SESSION["VREGIONS_REGION"]["ID"] ), false, false, Array("ID") ); while ($ob = $res->GetNextElement()){ $arFields = $ob->GetFields(); $arrFilter["ID"][] = $arFields["ID"]; } ?>
Работа через отрицание. Не показывать товары в регионе
Код сборки фильтра, если вам нужно использовать множественное свойство "Не показывать в регионах".
// фильтрация "Не показывать в регионах" global $arrFilter; $res = CIBlockElement::GetList( Array(), Array( "IBLOCK_ID" => {id инфоблока}, ), false, false, Array( "ID", ) ); while ($ob = $res->GetNextElement()){ $arFields = $ob->GetFields(); $dontShowInRegions = Array(); $db_props = CIBlockElement::GetProperty( {id инфоблока}, $arFields['ID'], array("sort" => "asc"), Array("CODE" => "{код свойства регионов (множественное)}") ); while ($ar_props = $db_props->Fetch()){ if ($ar_props['VALUE']){ $dontShowInRegions[] = $ar_props['VALUE']; } } if ($dontShowInRegions){ if (!in_array($_SESSION["VREGIONS_REGION"]["ID"], $dontShowInRegions)){ $arrFilter["ID"][] = $arFields["ID"]; } }else{ $arrFilter["ID"][] = $arFields["ID"]; } }