Если посмотреть в по добавлению свойства в умный фильтр (см. пример 4), то необходимо сделать всего лишь апдейт этого свойства с ключом SMART_FILTER = Y, но на практике все как всегда оказалось не так просто.
Вот такой код отказался работать:
При чем ошибки не выдавало, и даже наоборот, писало что все окей, свойство обновлено. Но когда переходишь в детальный просмотр свойств, то злополучная галочка оказывалась не отмечена:

Пришлось залезть в исходники и посмотреть, что там не так. И в файлике /bitrix/modules/iblock/classes/general/iblockproperty.php нашел вот такую проверку:

То есть, для того чтоб, добавить свойство в "Умный фильтр", необходимо чтобы у инфоблока поле "SECTION_PROPERTY" было установленно в "Y". Для это добавим не большую проверку перед апдейтом:
Вот и все, свойство будет добавлено в "Умный фильтр"
Вот такой код отказался работать:
$ibp = new CIBlockProperty;
$arFields = array("SMART_FILTER" => "Y", "IBLOCK_ID" => $IBLOCK_ID);
$ibp->Update($PROP_ID, $arFields); |
При чем ошибки не выдавало, и даже наоборот, писало что все окей, свойство обновлено. Но когда переходишь в детальный просмотр свойств, то злополучная галочка оказывалась не отмечена:

Пришлось залезть в исходники и посмотреть, что там не так. И в файлике /bitrix/modules/iblock/classes/general/iblockproperty.php нашел вот такую проверку:

То есть, для того чтоб, добавить свойство в "Умный фильтр", необходимо чтобы у инфоблока поле "SECTION_PROPERTY" было установленно в "Y". Для это добавим не большую проверку перед апдейтом:
if(CIBlock::GetArrayByID($IBLOCK_ID, "SECTION_PROPERTY") !== "Y") {
$ib = new CIBlock;
$ib->Update($IBLOCK_ID, array("SECTION_PROPERTY" => "Y"));
} |
Вот и все, свойство будет добавлено в "Умный фильтр"