Сделал следующее:
1. В шаблоне catalog.section добавил следующий код:
Код |
---|
$arrPropFilter = Array ();
foreach($arElement["PROPERTIES"] as $pid=>$arProperty):
if ($arProperty["VALUE"] != "" and !in_array($arProperty["ID"], $arrPropFilter)):
array_push($arrPropFilter, $arProperty["ID"]);
endif;
endforeach;
session_start();
$_SESSION['MYSESSION'] = $arrPropFilter;
|
В результате получается массив свойств, которые не пустые. Затем я отправляю этот массив через сессии
2. В result_modifer, который находится в папке шаблона catalog.filter поместил следующий код:
Код |
---|
session_start();
$myprop = $_SESSION['MYSESSION'];
$arResult["arrInputNames"]["arrFilter_pf"] = 1;
if (in_array(45, $myprop)) :
$arResult["arrProp"][45]["CODE"] = "CML2_ARTICLE";
$arResult["arrProp"][45]["NAME"] = "Артикул";
$arResult["arrProp"][45]["PROPERTY_TYPE"] = "S";
array_unshift($arResult["ITEMS"], Array("NAME" => "Артикул",
"INPUT" => '<input type="text" name="arrFilter_pf[CML2_ARTICLE]" size="20" value="" />',
"INPUT_NAME" => "arrFilter_pf[CML2_ARTICLE]",
"INPUT_VALUE" => "",
"~INPUT_VALUE" => ""));
endif;
|
В итоге я получил массив, который абсолютно аналогичен массиву, который формирует Битрикс, если бы я указал свойства для фильтрации через панель.
Код |
---|
Array
(
[arrProp] => Array
(
[102] => Array
(
[CODE] => CML_TOP20
[NAME] => TOP20
[PROPERTY_TYPE] => N
)
[45] => Array
(
[CODE] => CML2_ARTICLE
[NAME] => Артикул
[PROPERTY_TYPE] => S
)
)
[arrPrice] => Array
(
[Для сайта] => Array
(
[ID] => 9
[TITLE] => Для сайта
)
)
[arrSection] => Array
(
)
[FORM_ACTION] => /megabit/test/index.php?logout=yes&bitrix_include_areas=Y&SECTION_ID=22659&clear_cache=Y&arrFilter_pf%5BCML2_ARTICLE%5D=000000%D0%9D2744&arrFilter_pf%5BCML_TOP20%5D%5BLEFT%5D=&arrFilter_pf%5BCML_TOP20%5D%5BRIGHT%5D=&arrFilter_cf%5B9%5D%5BLEFT%5D=&arrFilter_cf%5B9%5D%5BRIGHT%5D=&set_filter=%D0%A4%D0%B8%D0%BB%D1%8C%D1%82%D1%80&set_filter=Y
[FILTER_NAME] => arrFilter
[arrInputNames] => Array
(
[arrFilter_ff] => 1
[arrFilter_pf] => 1
[arrFilter_cf] => 1
[set_filter] => 1
[del_filter] => 1
)
[ITEMS] => Array
(
[0] => Array
(
[NAME] => Артикул
[INPUT] => <input type="text" name="arrFilter_pf[CML2_ARTICLE]" size="20" value="" />
[INPUT_NAME] => arrFilter_pf[CML2_ARTICLE]
[INPUT_VALUE] =>
[~INPUT_VALUE] =>
)
[1] => Array
(
[NAME] => TOP20
[INPUT] => <input type="text" name="arrFilter_pf[CML_TOP20][LEFT]" size="5" value="" /> по <input type="text" name="arrFilter_pf[CML_TOP20][RIGHT]" size="5" value="" />
[INPUT_NAME] => arrFilter_pf[CML_TOP20][RIGHT]
[INPUT_VALUE] =>
[~INPUT_VALUE] =>
)
[2] => Array
(
[NAME] => Для сайта
[INPUT] => <input type="text" name="arrFilter_cf[9][LEFT]" size="5" value="" /> по <input type="text" name="arrFilter_cf[9][RIGHT]" size="5" value="" />
)
[3] => Array
(
[HIDDEN] => 1
[INPUT] => <input type="hidden" name="logout" value="yes" />
)
[4] => Array
(
[HIDDEN] => 1
[INPUT] => <input type="hidden" name="bitrix_include_areas" value="Y" />
)
[5] => Array
(
[HIDDEN] => 1
[INPUT] => <input type="hidden" name="SECTION_ID" value="22659" />
)
[6] => Array
(
[HIDDEN] => 1
[INPUT] => <input type="hidden" name="clear_cache" value="Y" />
)
)
)
|
При этом поле в фильтре появляется, но сама фильтрация не работает!!! Если я добавлю поле через панель, то все работает!!! Хотя массив $Result в обоих случаях идентичен. У меня подозрение, что дело еще глубже в компоненте, но где искать уже не знаю. Может кто поможет, а?