Битрикс, как получить ID раздела или элемента инфоблока по символьному коду?

Дата: 30 марта /

Если в битриксе стоит задача из урла вытащить ид раздела или элемента, при том что чпу строятся на основе символьного кода, то может пригодиться следующая функция.
Функция принимает три параметра: символьный код элемента или раздела, ID инфоблока и тип (IBLOCK_SECTION или IBLOCK_ELEMENT).

function getIdByCode($code, $iblock_id, $type)
{
	if(CModule::IncludeModule("iblock"))
	{
		if($type == 'IBLOCK_ELEMENT')
		{
			$arFilter = array("IBLOCK_ID"=>$iblock_id, "CODE" => $code);
			$res = CIBlockElement::GetList(array(), $arFilter, false, array("nPageSize"=>1), array('ID'));
			$element = $res->Fetch();
			if($res->SelectedRowsCount() != 1) return '<p style="font-weight:bold;color:#ff0000">Элемент не найден</p>';
			else return $element['ID'];
		}
		else if($type == 'IBLOCK_SECTION')
		{
			$res = CIBlockSection::GetList(array(), array('IBLOCK_ID' => $iblock_id, 'CODE' => $code));
			$section = $res->Fetch();
			if($res->SelectedRowsCount() != 1) return '<p style="font-weight:bold;color:#ff0000">Раздел не найден</p>';
			else return $section['ID'];
		}
		else
		{
			echo '<p style="font-weight:bold;color:#ff0000">Укажите тип</p>';
			return;
		}
	}
}

Странно что в стандартном API Битрикса нет такой функции.
Источник — http://www.bxdev.ru/posts/iblocks/getIdByCode/

Статьи по теме:

  1. Bitrix, как вывести с помощью функции GetIBlockElementListEx неактивные элементы?
  2. Bitrix, как работать с пользовательскими полями секций?
  3. Joomla, Joostina — как убрать надпись — «Следующие настройки PHP не являются оптимальными для БЕЗОПАСНОСТИ и их рекомендуется изменить»?
  4. Bitrix, как передать переменную в другой компонент или отложенные функции
  5. Битрикс, как скопировать инфоблок?

Метки: ,

Рубрика: Bitrix

Comments Один комментарий

 

  1. denx_b:

    Мой вариант:
    function GetElementIdByCode($ELEMENT_CODE) {
    global $DB;
    $CDBResult = $DB->Query(
    «SELECT ID FROM b_iblock_element WHERE CODE='».$ELEMENT_CODE.»‘»,
    true
    );
    $arResultCode = $CDBResult->Fetch();
    return $arResultCode[‘ID’];
    }

Оставить комментарий