Bitrix Получить ID инфоблока для элемента по его ID
Иногда возникает необходимость получить ID инфоблока к которому принадлежит элемент, для этого можно использовать более простой и понятный метод \CIBlockElement::GetIBlockByID(), вместо \CIBlockElement::GetList().
Важно подключить модуль iblock иначе возникнет ошибка «Class CIBlockElement not found». Подробнее о подключении модулей написано в статье Bitrix подключить модуль.
Если есть вопросы, что-то в статье не понятно или нашли ошибку, напишите об этом в комментариях, все комментарии читаются и по возможности материал будет доработан.
Популярные статьи
Bitrix подключить класс компонента
В статье приводится пример того как можно подключить только компонент битрикс без подключения его шаблона, чтобы можно было вызвать его метод или получить значения свойств
Подключить bitrix без подключения шаблона сайта
В статье приводится пример кода подключения bitrix без подключения шаблона сайта. Так же описано когда это может пригодится.
Bitrix подключить модуль
Так как bitrix состоит из большого количества различных модулей, знать как их правильно подключать просто необходимо.
Bitrix получить путь до компонента
В статье приводится пример кода для получения директории в которой находится файл компонента.
Команда grep. Примеры использования
grep — удобная и быстрая команда, здесь приведены примеры как произвести рекурсивный поиск в каталоге, поиск среди запущенных процессов и другие.
Bitrix получить значения списочного поля
В статье приводится пример кода для получения всех вариантов значений пользовательского поля с типом «Список». Так же описано как можно получить конкретный вариант значения поля.
Bitrix. Получить id элемента/раздела по коду
Очень не люблю ЧПУ в адресах страниц. Бессмысленное жертва ради мнимого удобства. Из-за ЧПУ получаются супер-длинные адреса, которыми даже нельзя нормально делиться в некоторых соцсетях/мессенджерах из-за ограничения количества символов. Поэтому приходится переделывать некоторые сайты.
В Битриксе есть инструмент, позволяющий найти id элемента/раздела по символьному коду (зачастую совпадает с частью ЧПУ). К сожалению, он не описан в документации. Поэтому о всех его свойствах можно догадаться только посмотрев исходный код в файле:
Найти id элемента по коду
$id = CIBlockFindTools::GetElementID( $element_id , $element_code , $section_id , $section_code , $arFilter )
Эта функция вернёт id элемента. Или ноль, если не найдёт элемент. Разберём параметры функции:
$element_id — если передать id элемента, то он и вернётся
$element_code — символьный код элемента
$section_id — id секции, в которой лежит элемент (необязательный)
$section_code — символьный код секции, в которой лежит элемент (необязательный)
$arFilter — массив свойств для фильтрации (необязательный). Для ускорения процесса поиска можно передать id инфоблока, в котором лежит элемент: array(«IBLOCK_ID» => №).
Найти id раздела по коду
Используется похожая функция, что и для поиска элемента:
$id = CIBlockFindTools::GetSectionID( $section_id , $section_code , $arFilter )
$section_id — id секции
$section_code — символьный код секции
$arFilter — массив свойств для фильтрации (необязательный). Но для ускорения процесса поиска можно передать id инфоблока, в котором лежит элемент: array(«IBLOCK_ID» => №).
Не страдайте
Товарищи, не страдайте! Не делайте ЧПУ. Ни разу не слышал и не видел оправданного применения ЧПУ.
ЧПУ — это как QR коды. Полезно для очень узкого круга задач. Поэтому его часто используют неуместно.
Публикации из этого раздела:
- Настройка NGINX. Вывод переменных — Одной из самых непостижимых областей для меня остаётся nginx. Точнее его настройка/программирование.
- Как удалить любое приложение на Android — Купив новый телефон от фирмы iTel из ценовой категории «бабушкафон» (самый дешёвый), обнаружил, что .
- BASH. (Пере) подключение к WIFI — Мой небольшой нетбук на Linux работает 24/7. Он выполняет сразу несколько периодических скриптов. Та.
- MySQL номер строки — В SQL есть специальная функция вывода номеров строк в запросе ROW_NUMBER(). Но в его младшем брате M.
- Глупости программистов-профессионалов — Расскажу про то, как в настоящее время происходит программирование. Неважно на каком проекте, неважн.
- PHP. Изменить Return-path — Из-за обилия спама человечеству приходится ухищряться и придумывать разнообразные фильтры писем. Эти.
- Linux создать папку — Папку в Linux можно создать как через терминал, так и через стандартный файловый менеджер. Со вторым.
- Место на хостинге — Если база данных выдаёт ошибки при каждом обращении, а загружаемые файлы оказываются пустыми, то ско.
4 комментариев к “ Bitrix. Получить id элемента/раздела по коду ”
Я бы с превеликим удовольствием забил бы на ЧПУ, более того, наслаждался, когда недавно делал сайт, которому ЧПУ вообще не приснился. Но обычно сразу налетают SEO, эти бастарды в славном семействе айтишников и начинают хрипло каркать, а клыент им верит.
Полностью согласен! Причём последнее время шум вокруг ЧПУ только усиливается. Написал об этом статью: https://www.alexgur.ru/articles/3811/
Привет! Спасибо за статью, помогло в одном проекте!
У тебя опечатка в «Найти id раздела по коду», ниже по тексту там функция должна быть CIBlockFindTools::GetSectionID
Битрикс.Как получить id элемента инфоблока?
У меня есть инфоблок,в нем есть элементы,мне нужно узнать id этих элементов и вывести их в цикл,как будет выглядеть пример вызова?
- Вопрос задан более трёх лет назад
- 4310 просмотров
Комментировать
Решения вопроса 0
Ответы на вопрос 1

[ '*', ], 'filter' => [ '=IBLOCK_ID' => 1, ] ]); foreach ($elementIterator->fetchAll() as $element) < echo '';print_r($element);echo ''; > >
Ответ написан более трёх лет назад
Получить ID элемента инфоблока вне шаблона компонента
На клиентском сайте использующем Битрикс, появилась задача получить ID текущего элемента инфоблока Новости, вне шаблона компонента, а на странице где выводятся различные инфоблоки.
Как это сделать я расскажу в этой небольшой заметке.
Как возникла такая необходимость?
Есть страница с выводом детальной новости, на ней же я хочу выводить дополнительные инфоблоки и в каком-то из них может понадобится ID открытой (текущей) новости. Например я хочу вывести в сайдбаре список из 5-ти последних новостей, а если текущая новость входит в их число, то она там продублируется, что нехорошо. Чтобы этого избежать в вызове компонента нужно поставить фильтр игнорирующий текущую новость, а это можно сделать передав в него ИД.
На сайте используется ЧПУ, адрес страницы получается такой /media/news/ID_НОВОСТИ/, а поскольку $arParams[«ELEMENT_ID»] доступен только внутри компонента, т.е. в его шаблоне, достать его от туда можно несколькими способами.
Достать ID из УРЛ
Один из способов получить ИД, достать его из УРЛ страницы. Для этого на старице, где вызывается компонент (не в шаблоне компонента), добавим такой простой код:
$id_news = explode("/", $_SERVER['REQUEST_URI']); // В моем случае id находится в массиве под 3 номером echo $id_news[3];Создать глобальную переменную с ID элемента
Вариант с тем чтобы распарсить URL и получить от туда ИД мне не подошел, поскольку была в будущем возможность того, что поменяется вложенность и ИД уже будет не 3-м элементом в массиве, а каким-то другим.
Поэтому я сделал по другому. В шаблоне компонента, в детальной новости, создал глобальную переменную содержащую текущий ID:
$GLOBALS['__NEWS_ID__'] = $arResult["ID"];И уже на самой странице, где выводятся нужные мне инфоблоки я могу использовать эту переменную:
echo "ID текущего элемента: ".$GLOBALS['__NEWS_ID__'];Ничего сложного тут нет, но когда я столкнулся с этой задачей, сразу не сообразил как сделать.
Попробовал погуглить, но так и не нашел ответа Все сайты как под копирку переписывают одно и тоже, как получить ID инфоблока в шаблоне компонента, хотя здесь вообще не должно возникать вопросов.
Поэтому, надеюсь, кому то эта заметка облегчит поиск
Категории
Свежие записи
- Таблицы в админке WordPress (часть 1)
- Импорт/экспорт Linux WSL
- Не печатаются заглавные буквы в PowerShell
- 1С-Битрикс: Ошибка авторизации! Срок действия пароля истек, необходимо сменить пароль.
- Несколько конфигураций для проекта Django
- Django inclusion_tag с разными шаблонами