В очень редких случаях сервер заказчика настроен не правильно, и обновить настройки инфоблока через админку не представляется возможным.
Как передать привязку к нескольким сайтам в Битриксе при помощи api
Самый верный способ – внести настройки на сервер и починить проблему. Однако, если доступа нет, а тех. поддержка считает что “у них все хорошо”, и время при этом идет, можно решить данную проблему через bitrix api.
Идем в документацию, нам понадобится update iblock:
https://dev.1c-bitrix.ru/api_help/iblock/classes/ciblock/update.php
Рассмотрим пример, в котором нам необходимо обновить данные по привязке к сайтам (именно с такой проблемой столкнулся на одном из проектов, и т.к. свойств у инфоблока было много, запрос не обрабатывался). Вырезаем лишнее, и оставляем только одну строку в свойствах:
<? require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); CModule::IncludeModule("iblock"); $ID = 3; // IBLOCK_ID $ib = new CIBlock; $arFields = Array( "SITE_ID" => Array("s1","s2"), ); if ($ID > 0) $res = $ib->Update($ID, $arFields);
Обратите внимание на 2 вещи:
1. это обязательное свойство, и передать его пустым не получится;
2. передаем в массиве, даже если привязать нужно только один сайт – Array(“s2”).
Спасибо за внимание 🙂