Bitrix Получить ID инфоблока для элемента по его ID
Иногда возникает необходимость получить ID инфоблока к которому принадлежит элемент, для этого можно использовать более простой и понятный метод \CIBlockElement::GetIBlockByID(), вместо \CIBlockElement::GetList().
Важно подключить модуль iblock иначе возникнет ошибка «Class CIBlockElement not found». Подробнее о подключении модулей написано в статье Bitrix подключить модуль.
Если есть вопросы, что-то в статье не понятно или нашли ошибку, напишите об этом в комментариях, все комментарии читаются и по возможности материал будет доработан.
Популярные статьи
Bitrix получить ID текущего покупателя
В статье приводится пример кода для получения ID текущего покупателя в bitrix.
Bitrix регистрация своего события
В статье приводится пример регистрации собственного события в bitrix и добавления на него обработчика.
Подключить bitrix без подключения шаблона сайта
В статье приводится пример кода подключения bitrix без подключения шаблона сайта. Так же описано когда это может пригодится.
Bitrix запись своих настроек в settings.php
Статья о том как разместить свои настройки не создавая велосипеды и костыли, а используя возможности системы.
Bitrix подключить класс компонента
В статье приводится пример того как можно подключить только компонент битрикс без подключения его шаблона, чтобы можно было вызвать его метод или получить значения свойств
Bitrix выполнить произвольный sql запрос
В статье приведен пример как выполнить произвольный sql запрос используя стандартные средства Bitrix
Битрикс.Как получить id элемента инфоблока?
У меня есть инфоблок,в нем есть элементы,мне нужно узнать id этих элементов и вывести их в цикл,как будет выглядеть пример вызова?
- Вопрос задан более трёх лет назад
- 4257 просмотров
Комментировать
Решения вопроса 0
Ответы на вопрос 1
[ '*', ], 'filter' => [ '=IBLOCK_ID' => 1, ] ]); foreach ($elementIterator->fetchAll() as $element) < echo '';print_r($element);echo ''; > >
Ответ написан более трёх лет назад
GetByID
Примечание: метод не проверяет, чтобы элемент с кодом ID был опубликован и не являлся записью из истории. Для выборки только опубликованных элементов воспользуйтесь методом CIBlockElement::GetList().
Смотрите также
- CDBResult
- CIBlockResult
- Поля элемента информационного блока
- CIBlockElement::GetList()
Примеры использования
if(!CModule::IncludeModule("iblock")) return; $res = CIBlockElement::GetByID($_GET["PID"]);
if($ar_res = $res->GetNext())
echo $ar_res['NAME'];
?>
Новинки документации в соцсетях:
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.
Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
Получить 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 инфоблока в шаблоне компонента, хотя здесь вообще не должно возникать вопросов.
Поэтому, надеюсь, кому то эта заметка облегчит поиск
Категории
Свежие записи
- Импорт/экспорт Linux WSL
- Не печатаются заглавные буквы в PowerShell
- 1С-Битрикс: Ошибка авторизации! Срок действия пароля истек, необходимо сменить пароль.
- Несколько конфигураций для проекта Django
- Django inclusion_tag с разными шаблонами
- Декоратор @property в моделях Django
