Суффикс класса страницы в 1C-Битрикс

7 октября 2011, 16:14

Сегодня, верстая один из очередных сайтов на Битрикс столкнулся с одной небольшой задачкой... Все страницы сайта однотипные, используется один шаблон для всех. Потребовалось сделать одну страницу частично уникальной в плане дизайна и простыми манипуляциями с кодом внутри материала эту задачу нельзя было решить, нужно было немного изменить шаблон сайта на этой конкретной странице.

В джумле есть такое понятие как суффикс класса страницы, т. е. для страниц джумла можно прописывать суффикс для класса основного контейнера body или div в зависимости от конкретного шаблона.
Ну к примеру в шаблоне используется такой контейнер —
<div class=«content»>всякий разный код, бла бла бла...</div>

Суффикс класса страницы в 1C-Битрикс

Прописав суффикс для этой страницы в настройках пункта меню, мы получим что-то типо
<div class=«content_page»>всё тот же код, бла бла бла... </div>

Теперь мы можем изменять внешний вид данной страницы, добавляя в файлы css различные правила для контейнеров внутри тега div.content_page

В битриксе такого функционала по умолчанию нет, поэтому мне пришлось придумывать как добиться чего-то подобного.
Первый вариант для решения моей задачи — это скопировать основной шаблон сайта и применить копию к странице которую требуется изменить. Именно так я бы и сделал буквально несколько месяцев назад, когда только начинал изучать битрикс. Это нифига не рациональный вариант :)

Можно проще!

Переходим к редактированию шаблона сайта, ищём тэг body или любой другой контейнер. Я использовал тег <body>

Мне нужно, чтоб у страницы с адресом /services/restaurant.php был свой суффикс... ну или в данном случае просто класс для тега body

Прописываем такую конструкцию:
<body<?if($APPLICATION->GetCurPage(false)==«/services/restaurant.php»):?> class=«restaurant»<?else:?><?endif?>>

Теперь у данной страницы к тегу body будет применяться класс restaurant, а на всех остальных страницах сайта тег будет без css класса.

2 комментария РСС

megamosk
Я использую такую функцию:

function bclass() {
global $APPLICATION;
$DirExp=explode(«/», $APPLICATION->GetCurDir());
if ($DirExp[1] !== «»): return ' class=«'.$DirExp[1].'»'; endif;
}
Антон
Спасибо, отлично работает такой способ.

Ваш комментарий

адрес не будет опубликован

ХТМЛ не работает


Ctrl + Enter