Зачастую в Битрексе требуется получить ID текущей категории. В Битриксе для этого есть специальная функция, которая берёт ID по символьному коду. По этому для начала нам нужно узнать символьный код категории. Для этого есть два способа, первый способ воспользоваться средствами PHP
$uri = $_SERVER['REQUEST_URI'];
Второй способ воспользоваться встроенной функцией Битрикс
$uri = $APPLICATION->GetCurPage();
Стоит учесть что в URI может быть get запрос, по этому надо сделать проверку и избавиться от части с get запросом.
$esc_get_url = explode("?", $uri);
$uri = $esc_get_url[0];
Далее нам надо разбить URI по слешу, добавить в массив и вытащить последний параметр с символьным кодом текущего раздела.
$cur_url = explode("/", $uri);
Так же следует учесть, что зачастую URI заканчивается на /, по этому последний элемент массива будет пустой, для этого надо избавиться от него
$temp = array_pop($cur_url);
Теперь в переменной $cur_url последним элементом является символьный код текущего раздела, который нам предстоит изъять.
$code = end($cur_url);
Ну и наконец-то надо получить ID по символьному коду. Здесь нам поможет штатная функция Битрикса:
$rsSections = CIBlockSection::GetList(array(),array('IBLOCK_ID' => $arParams ['IBLOCK_ID'], '=CODE' => $code));
if ($arSection = $rsSections->Fetch())
{
echo $arSection['ID'];
}
Не забываем вместо $arParams [‘IBLOCK_ID’], поставить ID вашего инфоблока.
В моем случаи полный код получился такой:
$uri = $_SERVER['REQUEST_URI'];
$esc_get_url = explode("?", $uri);
$uri = $esc_get_url[0];
$cur_url = explode("/", $uri);
$temp = array_pop($cur_url);
$code = end($cur_url);
$rsSections = CIBlockSection::GetList(array(),array('IBLOCK_ID' => 8, '=CODE' => $code));
if ($arSection = $rsSections->Fetch())
{
echo $arSection['ID'];
}