Зная ID раздела, в битриксе очень просто вывести его имя, а также узнать, по какой ссылке он доступен.
Ссылка формируется из настроек инфоблока. Чтобы все ваши ссылки отображались корректно, настройки внутри инфоблока и вашего компонента должны совпадать.
Для того чтобы вывести имя раздела будем использовать API Битрикса.
<? $res = CIBlockSection::GetByID($arItem['IBLOCK_SECTION_ID']); $ar_res = $res->GetNext(); ?> <a href="<? echo $ar_res['SECTION_PAGE_URL']; ?>"><? echo $ar_res['NAME']; ?></a>
$arItem[‘IBLOCK_SECTION_ID’] — ID раздела, имя которого мы хотим вывести
$ar_res[‘SECTION_PAGE_URL’] — ссылка на раздел
$ar_res[‘NAME’] — имя раздела
Хочу сделать возможной вывод списка новостей принадлежащих только конкретному разделу. Как это сделать?
Вам нужно воспользоваться методом CIblockElement::GetList
https://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockelement/getlist.php
Я вкратце писал об этом, посмотрите https://forwww.com/bitrix-how-to-get-element-and-section-list/
Во втором массиве, он же arFilter, вам нужно указать как минимум 3 параметра Array(«IBLOCK_ID» => $iblock_id, «ACTIVE» => «Y», «SECTION_ID» => $SECTION_ID), — где нужно указать id инфоблока и секции, а также указать что будем выбирать только активные элементы.
ПС извиняюсь что ответил с задержкой, спам фильтр жёстко работает 🙂
Ну вот сижу зациклился на разделах инфоблока и упорно пишу туда код раздела инфоблока, а не самого инфоблока. Поставил свой, толку мало, вижу на странице только название страницы содержание раздела инфоблока теперь не выводится.
Попробуйте перед кодом добавить CModule::IncludeModule("iblock"); ?>
Битрикс нагенерировал дубликаты страниц разделов
http://sibl.ru/catalog/lcd-panel-nec.html
http://sibl.ru/catalog/LCD-panel-NEC.html
подскажите как это исправить.
в более новых версиях битрикса есть выбор основного раздела, по которому и строится урл, плюс в настройках компонента вам нужно обязательно включить показ 404 страницы, чтобы при введении разных символов сервер отдавал 404. В настройках инфоблока, если я не путаю, можно найти выбор основного раздела
не работает
попробуйте перед подключить модуль инфоблока
Добрый день! Это не работает, если элемент относится сразу к двум разделам. Нашел решение:
Fetch()) {
$temp++; // Проверим, к какому количеству разделов принадлежит элемент
}
if ($temp == 1) { // Если элемент принадлежит только к одному разделу
$db_old_groups = CIBlockElement::GetElementGroups($arItem[‘ID’], false);
while($ar_group = $db_old_groups->Fetch()) {
echo ‘Раздел: ‘ . $ar_group[«NAME»];
}
}
else { // Если элемент принадлежит более чем к одному разделу
echo ‘Разделы: ‘;
$db_old_groups = CIBlockElement::GetElementGroups($arItem[‘ID’], false);
while($ar_group = $db_old_groups->Fetch()) {
echo $ar_group[«NAME»] . ‘ ‘;
}
}
?>
… но не могу понять как сделать ссылками эти разделы.
$ar_group[«SECTION_PAGE_URL»], он тут есть, судя по документации
https://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockelement/getelementgroups.php
Добрый день, Дмитрий.
Не могу понять в чем ошибка.
С помощью GetList вывожу список папок инфоблока:
«ASC»),
Array(«IBLOCK_ID» => 5, «ACTIVE» => «Y»),
false,
Array(‘ID’, ‘NAME’, ‘CODE’, ‘SECTION_PAGE_URL’)
);
while($ar_fields = $my_sections->GetNext())
{
?>
<a href="»>
При переходе на ссылку детального просмотра содержимого папки — отображается все содержимое инфоблока, плюс URL прописывается : » http://www.site.ru/kalendar/march/ «, т.е. index.php не дописывает.
В настройках комплексого компонента news включен режим ЧПУ:
Страница общего списка: #SECTION_CODE#/
Страница раздела: #SECTION_CODE#/
Страница детального просмотра: #SECTION_CODE#/#ELEMENT_CODE#/
В настройках инфоблока прописано:
URL страницы информационного блока: #SITE_DIR#/kalendar/
URL страницы раздела: #SITE_DIR#/kalendar/#SECTION_CODE#/
URL страницы детального просмотра: #SITE_DIR#/kalendar/#SECTION_CODE#/#ELEMENT_CODE#/
Подскажите пожалуйста в чем ошибка или какую информацию почитать?
ну не глядя 2 причины возможны:
1. возможно вам нужно внутри компонента включать настроку ЧПУ и там дополнительно прописать правила формирования (проверить что они добавились в файл urlrerwite.php)
2. возможно у ваших элементов не сгенерирован символьный код
Предыдущий код не корректно отобразился — продублировала.
«ASC»),
Array(«IBLOCK_ID» => 5, «ACTIVE» => «Y»),
false,
Array(‘ID’, ‘NAME’, ‘CODE’, ‘SECTION_PAGE_URL’)
);
while($ar_fields = $my_sections->GetNext())
{
?>
<a href="»>