Примеры работы и решения проблем
Подробную информацию об условиях применения шаблонов можно посмотреть в следующих уроках:
- Как работать с шаблонами сайта (курс Контент-менеджер)
-
Шаблоны дизайна (курс Администратор. Базовый)
-
Простые примеры применения шаблонов в зависимости от различных условий
- Подключение favicon.ico для разных шаблонов
- Отдельный шаблон для главной страницы сайта
- Изменение шаблона сайта, в зависимости от временного параметра
- Применение шаблона сразу по двум условиям
- Применение шаблона только к файлам с определённым расширением
- Изменение дизайна «шапки» сайта для разных разделов
- Особенности работы с ajax
Простые примеры применения шаблонов в зависимости от различных условий
Если свойство раздела phone равно Y
Если текущий раздел равен /ru/catalog/phone/
Если текущий пользователь - администратор
Если нужно привязать шаблон к динамической странице (в примере - к детальной странице(карточке) товара.)
Подключение favicon.ico для разных шаблонов
Для того чтобы в разных шаблонах сайтов были разные значки, надо в шаблоне в header.php добавить вызов значка из шаблона:
Отдельный шаблон для главной страницы сайта
Цитата: По умолчанию ставлю шаблон, который рассчитан для внутренних страниц сайта. На главной странице будет свой шаблон. Подскажите, как составить условие для отображения нужного шаблона на главной странице сайта?
Вдобавок к основному шаблону для всех страниц сайта необходимо подключить требуемый шаблон через условие Для папки или файла, в котором указать /index.php с учетом индекса сортировки применения шаблона.
Изменение шаблона сайта, в зависимости от временного параметра
Цитата: Как реализовать изменение шаблона сайта, в зависимости от временного параметра (Всего два шаблона, но они должны меняться каждый час)?
Для этого необходимо сделать изменение текущего шаблона по условию Выражение PHP.
Первый вариант
По нечетным часам: ((date("H")+6)%2) == 1
По четным часам: ((date("H")+6)%2) == 0
где +6 - указывает временную зону.
Второй вариант
date("H")%2
или
!date("H")%2
Применение шаблона сразу по двум условиям
Цитата: Подскажите, как задать шаблон одновременно по 2 условиям (для группы пользователей и для папки и файла) в настройках БУС.
Для этого необходимо использовать изменение текущего шаблона по условию Выражение PHP:
in_array($groupID, $USER->GetUserGroupArray()) || strpos($APPLICATION->GetCurDir(), "/dir/")!==false || $APPLICATION->GetCurPage()=="/dir/file.php"
Применение шаблона только к файлам с определённым расширением
Цитата: Подскажите, пожалуйста, выражение PHP, чтобы шаблон действовал на все страницы, заканчивающиеся на .php, а .html не трогал.
Решение: изменение шаблона по условию Выражение PHP:
Аналогично для файлов с расширением html:
Изменение дизайна «шапки» сайта для разных разделов
Задача: Сайт разделен на несколько разделов. По замыслу у каждого раздела должна быть своя «шапка» в дизайне. Более в дизайне ничего не меняется. Как лучше реализовать смену «шапок» разделов?
Решение: В шаблон подключается компонент Включаемая область (для раздела):
<div id="header">
<?$APPLICATION->IncludeComponent("bitrix:main.include", ".default", array(
"AREA_FILE_SHOW" => "sect",
"AREA_FILE_SUFFIX" => "headerinc",
"AREA_FILE_RECURSIVE" => "Y",
"EDIT_TEMPLATE" => "sect_headerinc.php"
),
false
);?>
</div>
Код шапки каждого из разделов будет храниться в файле sect_headerinc.php. Параметр "AREA_FILE_RECURSIVE" => "Y" означает, что такая же "шапка" появится у всех подразделов данного раздела, если родительский sect_headerinc.php не будет специально перекрыт у кого-то из нижележащих разделов.
Особенности работы с ajax
Использование режима ajax имеет свои особенности. Чтобы строка навигации в открываемой по ajax странице имела в цепочке навигации своё название, необходимо, чтобы в шаблоне обязательно присутствовал элемент с id="navigation". Это необязательно должен быть div, это может быть span, h1, p и так далее.
Аналогично, для заголовка обязательно наличие элемента с id="pagetitle".