В 1С Битрикс есть несколько способов вывода разных названий раздела в меню и в заголовке. Рассмотрим два основных подхода.
1. Использование пользовательских полей.
В 1С Битрикс есть возможность добавления пользовательских полей к разделам. Создадим пользовательское поле с названием "Название для меню" для разделов. Затем пропишем для каждого раздела нужное значение этого поля.
Чтобы вывести это название в меню, откроем файл меню и добавим следующий код в нужное место:
<? $APPLICATION->IncludeComponent( 'bitrix:menu', 'top_menu', array( // другие параметры меню 'ON_MENU_SHOW_SECTION' => 'Y', 'ON_MENU_SHOW_SECTION_FIELD' => 'UF_MENU_TITLE', 'ON_MENU_SHOW_SECTION_IBLOCK_ID' => 1 ) ); ?>
В этом коде 'ON_MENU_SHOW_SECTION' => 'Y'
указывает, что нужно выводить названия разделов в меню, 'ON_MENU_SHOW_SECTION_FIELD' => 'UF_MENU_TITLE'
указывает, что в качестве названия нужно использовать значение пользовательского поля UF_MENU_TITLE
, а 'ON_MENU_SHOW_SECTION_IBLOCK_ID' => 1
говорит, что работаем с элементами информационного блока с ID равным 1.
Аналогично, чтобы вывести название раздела в заголовке страницы, откроем файл шаблона страницы и добавим код:
<? $APPLICATION->SetTitle($APPLICATION->GetDirProperty('title')); ?>
Затем пропишем в пользовательском поле UF_PAGE_TITLE
нужное название для каждого раздела. Выведем это название в заголовке страницы, добавив следующий код в файл шаблона страницы:
<? $APPLICATION->SetTitle($APPLICATION->GetDirProperty('page_title')); ?>
Или вместо этого можно использовать:
<? $APPLICATION->SetTitle($APPLICATION->GetTitle()); ?>
После этих настроек каждый раздел будет иметь свое название в меню и в заголовке.
2. Использование свойств элемента информационного блока.
Второй способ - использование свойств элемента информационного блока. Для этого откроем карточку редактирования элемента инфоблока, добавим нужные свойства (например, "Название для меню" и "Название для заголовка") и пропишем нужные значения для каждого элемента.
Затем, чтобы выводить название раздела в меню, добавим следующий код в шаблоне меню:
<?php $sectionName = ''; if (CSite::InDir('/section/')) { $sectionId = substr($_SERVER['REQUEST_URI'], strrpos($_SERVER['REQUEST_URI'], '/') + 1); $sectionName = CIBlockSection::GetByID($sectionId)->GetNext()['NAME']; } ?>
Используем $sectionId
для получения названия текущего раздела информационного блока, а затем выводим это название в нужном месте меню:
<a href="/section/<?=$sectionId;?>"> <?=$sectionName;?> </a>
Аналогичным образом можно использовать свойство элемента для вывода названия раздела в заголовке страницы, добавив следующий код в файл шаблона страницы:
<?php $elementId = $APPLICATION->GetCurPageParam(); $elementName = CIBlockElement::GetByID($elementId)->GetNext()['NAME']; $APPLICATION->SetTitle($elementName); ?>
Таким образом, используя пользовательские поля или свойства элемента информационного блока, можно выводить разные названия раздела в меню и в заголовке страницы в 1С Битрикс.