Для задачи использования разных шаблонов детального описания для разных элементов одного инфоблока в CMS 1C-Bitrix есть несколько подходов.
1. Использование встроенных функций 1C-Bitrix:
- Для начала необходимо создать шаблон детального описания элемента инфоблока.
- Затем на странице списка элементов инфоблока (например, компонент bitrix:news.list) добавьте параметр "DETAIL_URL", указав шаблон ссылки на детальную страницу элемента, например:
$APPLICATION->IncludeComponent( "bitrix:news.list", "...", array( "...", "DETAIL_URL" => "/news/#ELEMENT_ID#/", "...", ) );
- После этого при создании элемента в инфоблоке в поле "URL детальной страницы" укажите ссылку на конкретный шаблон, например, "/news/my-custom-template/".
- Создайте файл шаблона my-custom-template.php в папке вашего шаблона сайта и задайте желаемую структуру и стили для него.
// /local/templates/my-template/news/my-custom-template.php <?php if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die(); ?> <div class="my-custom-template"> <!-- Ваш код HTML и логика шаблона --> </div>
- При открытии детальной страницы элемента с указанной ссылкой будет использоваться файл шаблона my-custom-template.php.
2. Использование пользовательских свойств инфоблока:
- Создайте пользовательское свойство для инфоблока типа "Ссылка на страницу" (IBLOCK_ELEMENT_PROP_VALUE), например, с кодом DETAIL_TEMPLATE.
- В поле "Значение по умолчанию" укажите путь к шаблону детального описания, который нужно использовать для данного элемента инфоблока.
- При создании или редактировании элемента инфоблока в этом свойстве можно выбрать нужный шаблон, указав соответствующее значение.
- В файле шаблона списка элементов инфоблока (например, компонент bitrix:news.list) добавьте код, который будет проверять значение свойства DETAIL_TEMPLATE для каждого элемента и использовать соответствующий шаблон:
$APPLICATION->IncludeComponent( "bitrix:news.list", "...", array( "...", "PROPERTY_CODE" => array("DETAIL_TEMPLATE"), "DETAIL_TEMPLATE_PROPERTY" => "DETAIL_TEMPLATE", "...", ) );
- При открытии детальной страницы элемента будет использоваться шаблон, указанный в свойстве DETAIL_TEMPLATE.
3. Использование модификации ядра 1C-Bitrix:
- Для продвинутого способа изменения шаблона детального описания для каждого элемента инфоблока можно изменить код ядра системы.
- Откройте файл /bitrix/modules/iblock/classes/general/element.php и найдите функцию GetByID.
- Внутри функции найдите строку $result = $iblockElementObject->GetNext(); и добавьте перед ней следующий код:
$result["DETAIL_PAGE_TEMPLATE"] = "/news/my-custom-template/";
- Замените /news/my-custom-template/ на ссылку на нужный вам шаблон детального описания.
- Сохраните изменения в файле.
- После этого при создании элемента в инфоблоке укажите ссылку на детальную страницу элемента, которая будет соответствовать нужному шаблону.
Каждый из этих подходов имеет свои преимущества и ограничения, поэтому выбор конкретного способа зависит от требований и возможностей вашего проекта.