Как получить id ссылки на битриксе

ЧПУ и ID элемента

Здесь поднималась тема ЧПУ в сложных компонентах. . Мир пока.

Цитата
Игорь пишет:
Я накосячил, вставив любой код он вытащил element_id и поместил в информационный блок

Да каким-то нетривиальным образом. Я также подумал об извлечении ELEMENT_ID из URL-адреса.
Мой ЧПУ немного сложнее. /topik555/news444.php. Пока не делал, но ID надо где-то хранить.

Если Андрей не напишет, спрошу в техподдержку.

Есть стандартный блок отчетов. Без ЧПУ путь к новостной статье ../index.php?SECTION_ID= &ELEMENT_ID= с включенным ЧПУ путь ../topic /news .php

Задача: с включенным ЧПУ на новости page ../topic/news .php получить количество новостей без разбора URL.

PS. В первом случае без ЧПУ все просто (GET).

Встреча
Константин Полунин пишет:
Задача: при включенном ЧПУ на странице новости…/topic/news .php узнать количество новостей без разбора URL.
Цитата
Евгений Жуков пишет:
Где именно на странице? В компоненте он уже есть.

Прямо в теле страницы.

Настоящая задача — прикрепить к новости список сопутствующих товаров из каталога. Логика будет выглядеть так:

Источник

Битрикс. Получить идентификатор элемента/раздела по коду

Дата 28.10.2017 Автор Алексей Рубрика Программирование

Очень нет Я люблю ЧПУ в адресах сайтов. Бессмысленная жертва воображаемого комфорта. Из-за ЧПУ получаются сверхдлинные адреса, которыми даже нельзя нормально поделиться в некоторых социальных сетях/мгновенных сообщениях из-за ограничения на количество символов. Поэтому кое-где приходится переделывать.

В Битрикс есть инструмент, позволяющий найти идентификацию элемента/раздела по символьному коду (часто тому же, что входит в состав ЧПУ). К сожалению, в документации это не описано. Так что обо всех его свойствах можно догадаться, просто взглянув на исходный код в файле:

Найти id элемента по коду

$id = CIBlockFindTools::GetElementID( $element_id , $ element_code , $section_id , $section_code , $arFilter )

Эта функция возвращает идентификатор элемента. Или null, если элемент не найден. Разберем параметры функции:

$element_id — если вы передаете идентификатор элемента, он возвращает
$element_code — код символа элемента
$section_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-коды. Полезно для очень ограниченного круга задач. Поэтому его часто используют не по назначению.

Источник

Битрикс: как получить идентификатор значения свойства типа списка

Давайте посмотрим, как получить идентификатор свойства Тип списка, зная его значение.

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

Сначала рассмотрим простой пример: мы нужно узнать ID элемента (или раздела), зная его название, код символа или другой параметр:

$arItem[‘ID’] — будет ID наш элемент информационного блока. Сделаем то же самое для раздела, только теперь ищем идентификатор раздела по коду символа :

$arItem[‘ID’] теперь является идентификатором раздела.
Почему я привел вам эти примеры? Для вашего понимания, в свойствах все хранится немного иначе.

Как узнать ID значения свойства, зная его название в Битриксе?

Для этого нам понадобится метод CIBlockPropertyEnum: :Получить список . Структура данных свойства выглядит следующим образом:

Как выглядел бы код, если бы мы получили имя свойства из его идентификатора:

$enum_fields[ «VALUE»] is аналогия имени в именах элементов и разделов.
Противоположная процедура просто меняет фильтр на:

$enum_fields[«ID»] — и будет наш нужный ID.
«IBLOCK_ID»=>34, «CODE»=>»PARTNER» — информационный блок и символьный код нашего свойства списка.

Так же запомните этот ID, для таких методов есть более короткие нотации:

Их можно рекомендовать, потому что они имеют более короткую нотацию:

Но этот метод возвращает много бесполезных полей, поэтому всегда помните 2 вещи:
1. Я не рекомендуется делать этот метод в цикле, количество запросов к базе значительно возрастет, лучше написать правильный GetList. Я как-то искал баг в своем коде, загрузка страницы занимала более 5 секунд и оказалось, что причина в этом 🙂
2. В принципе очень похоже на getlist , только это не ограничивает возвращаемые поля

Источник

Как отобразить название раздела и его ссылку в 1С-Битрикс

Зная ID раздела, очень легко вывести его название в Битрикс, а также узнать, по какой ссылке он доступен.

Читайте также:  Как получить огурчик рик

Ссылка формируется из настроек информационного блока. Для того, чтобы все ваши ссылки отображались корректно, настройки в инфоблоке и вашем компоненте должны совпадать.

Мы будем использовать API Битрикс для отображения названия раздела.

$arItem[‘IBLOCK_SECTION_ID’] — ID раздела, название которого мы хотим отобразить
$ar_res[‘SECTION_PAGE_URL’] — ссылка на раздел
$ar_res[‘NAME’] — название раздела

автор: Дмитрий

13 комментариев

Я хочу иметь возможность отображать список сообщений которые относятся только к определенному разделу. Как это сделать?

Во втором поле, также известный как arFilter, вы должны ввести как минимум 3 параметра, где вы должны ввести идентификатор инфоблока и раздела, а также указать, что мы будем выбирать только активные элементы.

PS: Извините за запоздалый ответ, спам-фильтр работает отлично 🙂

Ну я же сижу на петлях в разделах инфоблока и упорно пишу туда код раздела инфоблока, а не самого инфоблока. Я поставил свой, он не очень юзабелен, на странице видно только название страницы, содержимое раздела инфоблока теперь не отображается.

Попробуйте добавить

перед кодом

в более новые версии Битрикс, есть опция из основного раздела по URL встроена, кроме того, в настройках компонента нужно включить отображение 404 страниц, чтобы при вводе разных символов сервер возвращал 404 В информации о настройках блока, если не ошибаюсь, можно найти выбор основного раздела

Попробуйте перед подключением модуля инфоблока

Добрый день! Это не работает, если элемент принадлежит к двум разделам одновременно. Я нашел решение:
Fetch()) <
$temp++; // Проверяем, скольким разделам принадлежит элемент
>
если ($temp == 1) < // Если элемент принадлежит только одному разделу
$db_old_groups = CIBlockElement::GetElementGroups($arItem[‘ID’], false);
while($ar_group = $db_old_groups->Load()) <
эхо ‘Раздел:’ . $ar_group[«ИМЯ»];
>
>
плюс < // Если элемент принадлежит более чем одному разделу
echo ‘Sections:’;
$db_old_groups = CIBlockElement::GetElementGroups($arItem[‘ID’], false);
while($ar_group = $db_old_groups->Load()) <
эхо $ar_group[«ИМЯ»] . ‘ ‘;
>
>
?>

…но не знаю как связать эти разделы.

Добрый день, Дмитрий.
Я не могу понять, что не так.
Я использую GetList для отображения списка папок информационных блоков:
«ASC»),
Array(«IBLOCK_ID» => 5, «ACTIVE» => «Y»),
false,
Array(‘ID’, ‘ИМЯ’, ‘КОД’, ‘URL_PAGE_SECTION’)
);
while($ar_fields = $my_sections->GetNext())
<
?>

При переходе по ссылке и детальном просмотре содержимого папки отображается все содержимое информационного блока и пишется URL: «http://www . site.ru/kalendar/march/» , т.е. index.php не добавляется.

Режим ЧПУ включен в настройках компонента комплексного отчета:
Страница общего списка: #SECTION_CODE#/
Страница раздела : #SECTION_CODE# /
Страница детального просмотра: #SECTION_CODE#/#ELEMENT_CODE#/

Конфигурация информационного блока включает:
URL страницы информационного блока: #SITE_DIR#/kalendar/ <​​12> ; URL-адрес страницы раздела: #SITE_DIR#/kalendar /#SECTION_CODE #/
Подробный URL-адрес страницы просмотра страницы: #SITE_DIR# /calendar/#SECTION_CODE#/#ELEMENT_CODE#/

Читайте также:  Как открыть точные удары ведьмак 3

Подскажите, что не так или какую информацию читать.

Ок, не глядя, возможны 2 причины:
1. возможно нужно включить конфигурацию ЧПУ в компонент и дополнительно указать там правила (убедиться, что он был добавлен в файл urlrerwite.php)
2 .ваши элементы могут не иметь t сгенерированный код символа

Приведенный выше код se не отображалось правильно, оно было продублировано.
«ASC»),
Массив(«IBLOCK_ID» => 5, «ACTIVE» => «И»),
false,
Массив(‘ID’, ‘ИМЯ’, ‘CODE ‘, ‘URL_PAGE_SECTION’)
);

Источник

Получить ID элемента инфоблока вне шаблона компонента

На странице на клиентском сайте с помощью Битрикс появилась задача получить ID текущего элемента из инфоблока Сообщение, вне шаблона компонента, но на странице, где отображается несколько инфоблоков.

Расскажу как сделать это в этой короткой заметке.

Как возникла такая необходимость?

Есть подробная страница вывода сообщений, где я хочу вывести дополнительные информационные блоки и в некоторых из них идентификаторы открытых ( текущий) могут потребоваться сообщения. Например, я хочу отобразить в сайдбаре список из 5 самых последних сообщений, и если текущее сообщение будет одним из них, то оно там будет продублировано, что нехорошо. Чтобы этого не допустить, нужно в вызове компонента поставить фильтр, игнорирующий текущие новости, а сделать это можно, передав id.

Страница использует ЧПУ, адрес страницы /media/news /ID_NEWS/ ., а так как $arParams[“ELEMENT_ID”] доступен только внутри компонента, т.е. в его шаблоне, есть несколько способов получить его оттуда.

Получить идентификатор из URL

Один из способов получить идентификатор — получить его из URL-адреса страницы. Для этого на странице, где вызывается компонент (не в шаблоне компонента), добавьте следующий простой код:

Создайте глобальную переменную с id element

Возможность парсить URL и получать оттуда ID меня не устраивала, т.к. в будущем был шанс, что изменится вложенность и ID перестанет быть третьим элементом в массив, а какой-то другой.

Поэтому я сделал иначе. В шаблоне компонента в подробной отчетности я создал глобальную переменную, которая содержала текущий ID:

И уже на самой странице, где отображаются нужные мне информационные блоки, я могу использовать эту переменную:

В этом нет ничего сложного, но когда я столкнулся с этой задачей, я сразу не знал, как это сделать.

Я пробовал гуглить, но не нашел ответ Все сайты копируют одинаково, чтобы получить ID инфоблока в шаблоне компонента, хотя вопросов быть не должно.

Так что я надеюсь, что эта заметка облегчит кому-то поиск

Micro: редактор терминала, совместимый с мышью

Шрифт

Поделиться с друзьями
Решатор
Adblock
detector