В 1С Битрикс нельзя передать в фильтр массив с тэгами, для того, чтобы сделать выборку по нескольким тэгам, нужно либо делать прямой запрос к БД, либо создать сложный фильтр.
Ниже код примера со сложным фильтром для битрикс. Его использовали для выборки новостей в блок "Читайте также".
Входящие данные:
$arParams["ID"] - ID элемента
$arParams["IBLOCK_ID"] -
$arFilter = Array("IBLOCK_ID" => $arParams["IBLOCK_ID"], "ID" => $arParams["ID"], "ACTIVE"=>"Y");
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array ("nTopCount" => 1), $arSelect);
if($ob = $res->GetNext())
{
if(strlen($ob["TAGS"])>0){
$arLooksLike = array(
"IBLOCK_ID" => $arParams["IBLOCK_ID"],
"ACTIVE"=>"Y",
"INCLUDE_SUBSECTIONS" => "Y",
">=DATE_CREATE" => ConvertTimeStamp(time()-86400 * $arParams["DATE_CREATE"], "FULL"),
"!ID"=>$ob["ID"]
);
$NameItems = preg_split("#, #", $ob["TAGS"]);
$itemsArray=array("LOGIC" => "OR");
foreach($NameItems as $item){
$itemsArray[]=array("TAGS" => "%".$item."%");
}
$addFArray=array(
array($itemsArray),
);
$arLooksLike[] = array($itemsArray);
}
}
В результате получаем массив вида:
Array
(
[IBLOCK_ID] => 29
[ACTIVE] => Y
[INCLUDE_SUBSECTIONS] => Y
[>=DATE_CREATE] => 08.02.2017 15:08
[!ID] => 3436
[0] => Array
(
[0] => Array
(
[LOGIC] => OR
[0] => Array
(
[TAGS] => %Оффшоры%
)
[1] => Array
(
[TAGS] => %двойное налогообложение%
)
)
)
)
Этот массив передаем в фильтр.
Теги: сложный фильтр, теги битрикс