Бывает ситуация, когда при переходе в корень раздела — посетитель перенаправлялся на первый элемент инфоблока.
Например, у нас раздел /news/, в котором вызывается комплексный компонент Новости (bitrix.news). А страницы для списка новостей не предусмотрено логикой сайта (может это и не новости вовсе). И надо при обращению к корню, вместо вывода списка новостей- переадресовало на страницу первой детальной новости.
Для этого копируем шаблон комплексного компонента bitrix.news и в нем правим файл news.php. Точнее, приводим его к такому коду:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); $this->setFrameMode(true); if(CModule::IncludeModule("iblock")) { $IBLOCK_ID = $arParams['IBLOCK_ID']; $arOrder = Array("SORT"=>"ASC"); // здесь задаем правило сортировки, чтобы определить кто у нас первый $arSelect = Array("ID", "DETAIL_PAGE_URL"); $arFilter = Array("IBLOCK_ID"=>$IBLOCK_ID, "ACTIVE"=>"Y"); $res = CIBlockElement::GetList($arOrder, $arFilter, false, ["nTopCount" => 1], $arSelect); while($ob = $res->GetNextElement()) { $arFields = $ob->GetFields(); LocalRedirect($arFields["DETAIL_PAGE_URL"]); } } |
Обратите внимание, на строку где задаем правило сортировки. Именно с помощью неё мы определяем по какому правилу выбрать первый элемент инфоблока. У меня берется с самым наименьшим значением поля сортировки. Тут можно поменять, сделать последнюю по дате активности, или в алфавитном порядке и т.п. Полный перечень полей для сортировки тут.