Получить ID инфоблока по его символьному коду
Как в Битриксе получить ID инфоблока по его символьному коду
Часто бывает ситуация, когда ID инфоблока на боевом и тестовом сайтах не совпадают. В таком случае удобнее получать его "на лету" по символьному коду, который задается в настройках инфоблока.
Привожу код, который позволит получить ID инфоблока по его символьному коду:
<?php
use Bitrix\Main\Loader;
use Bitrix\Iblock\IblockTable;
function get_iblock_id($code)
{
if (!$code) return '';
$iblocksId = $_SESSION['iblocks_id']; //Проверяем в сессии
if ($iblocksId && array_key_exists($code, $iblocksId) && $iblocksId[$code]) {
return $iblocksId[$code];
}
Loader::includeModule('iblock');
$iBlock = IblockTable::getRow([
'filter' => ['=CODE' => $code],
'select' => ['ID'],
]);
$iblockId = $iBlock['ID'];
$iblocksId[$code] = $iblockId;
$_SESSION['iblocks_id'] = $iblocksId; //Сохраняем в сессии
return $iblockId;
}
Также дополнительно имеется сохранение ID инфоблока в сессию для того, чтобы избежать лишних запросов в БД.
Оставьте комментарий
Если эта статья была полезной для вас, оставьте комментарий ниже или задайте интересующий Вас вопрос. Ваш опыт может помочь другим читателям!
Написать комментарий