Дата последнего изменения: 22.01.2024
Цитатник веб-разработчиков. Алексей Майдокин: Моё мнение - вёрстке и другим сложным штукам место в шаблонах, компонентах и тому подобном, короче там, куда простым смертным просто так не добраться. Сложная вёрстка в области контента - это как двигатель в салоне легковушки. |
Подробную информацию об условиях применения шаблонов можно посмотреть в следующих уроках:
Простые примеры применения шаблонов в зависимости от различных условий
Если свойство раздела phone
равно Y
$APPLICATION->GetDirProperty("phone")=="Y"
Если текущий раздел равен /ru/catalog/phone/
$APPLICATION->GetCurDir()=="/ru/catalog/phone/"
Если текущий пользователь - администратор
$USER->IsAdmin()
Если нужно привязать шаблон к динамической странице (в примере - к детальной странице(карточке) товара.)
preg_match("#/catalog/\?SECTION_ID=\d+&ELEMENT_ID=\d+#i",$_SERVER['REQUEST_URI']);
Подключение favicon.ico для разных шаблонов
Для того чтобы в разных шаблонах сайтов были разные значки, надо в шаблоне в header.php добавить вызов значка из шаблона:
<link rel="icon" type="image/x-icon" href="<?=SITE_TEMPLATE_PATH;?>/images/favicon.ico" />
Отдельный шаблон для главной страницы сайта
Вдобавок к основному шаблону для всех страниц сайта необходимо подключить требуемый шаблон через условие Для папки или файла, в котором указать /index.php
с учетом индекса сортировки применения шаблона.
Изменение шаблона сайта, в зависимости от временного параметра
Для этого необходимо сделать изменение текущего шаблона по условию Выражение PHP.
Первый вариант
По нечетным часам: ((date("H")+6)%2) == 1
По четным часам: ((date("H")+6)%2) == 0
где +6
- указывает временную зону.
Второй вариант
date("H")%2
или
!date("H")%2
Применение шаблона сразу по двум условиям
Для этого необходимо использовать изменение текущего шаблона по условию Выражение PHP:
in_array($groupID, $USER->GetUserGroupArray()) || strpos($APPLICATION->GetCurDir(), "/dir/")!==false || $APPLICATION->GetCurPage()=="/dir/file.php"
Применение шаблона только к файлам с определённым расширением
Решение: изменение шаблона по условию Выражение PHP:
substr($APPLICATION->GetCurPage(true), -4) == ".php"
Аналогично для файлов с расширением html:
substr($APPLICATION->GetCurPage(true), -5) == ".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 странице имела в цепочке навигации своё название, необходимо, чтобы в шаблоне обязательно присутствовал элемент с id="navigation"
. Это необязательно должен быть div
, это может быть span
, h1
, p
и так далее.
Аналогично, для заголовка обязательно наличие элемента с id="pagetitle"
.