Зная 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="”>
Паспяхова выкарыстаў гэтае невялічкае рашэнне 🙂 Дзякуй вялікі!
дякую 🙂