Стоит тема fusion, размер ширины сайта на 960px.
Хотелось бы изменить размер для определенных страниц.
Например для страницы, где будет регистрация, там хочу другой размер, т.к. ширина не позволяет вместить то, что мне нужно.
Вопрос. Как увеличить ширину страницы на определенных страницах?
Комментарии
Можно на этих страницах прятать блоки, однако, если этого недостаточно - в template.php в функции fusion_preproccess_page(или как там её) задаете новый класс для body на интересующих Вас страницах, и определяете ширину для этого класса в CSS, не использую fusion(да и вообще готовые темы), но по моему у них там все однотипно.
Есть такая функция, но как задать класс для селектора body для определенной страницы?
Вопрос актуален
Создай свою тему на основе fusion и меняй как угодно
Друпал автоматом добавляет к классы, по которым можно определить страницу (например: html not-front logged-in page-node page-node- page-node-61 node-type-news)
Не друпал добавляет, а тема, и то далеко не каждая.
В большинстве тем такое уже реализовано, посмотрите как у вас в page.tpl.php задается тег body, и как переменная с классом задается в template.php
Если никак не задается, то например, в Гарланд это сделано так:
в page.tpl.php тег body записывается так:
а сама функция phptemplate_body_class определяется в template.php:
if ($left != '' && $right != '') {
$class = 'sidebars';
}
else {
if ($left != '') {
$class = 'sidebar-left';
}
if ($right != '') {
$class = 'sidebar-right';
}
}
if (isset($class)) {
print ' class="'. $class .'"';
}
}
переменные $left и $right - это переменные регионов именно в гарланде, т.е. в других темах имена переменных будут другими, да и в Вашем случае этот способ не совсем подходит, можно взять на основе гарланд и немного переделать:
page.tpl.php body см выше(только переменные подставлять от левой и правой колонки)
а в template.php
if ($left != '' && $right != '') {
$class = 'sidebars';
}
else {
if ($left != '') {
$class = 'sidebar-left';
}
if ($right != '') {
$class = 'sidebar-right';
}
}
//--начало
//если нужно только на строго определенных страниц
if(in_array(strtolower($_GET['q']),array(
'node/1',
'taxonomy/term/1',
//эти 2 пути для примера, добавлять сюда нужно реальные адреса(не алиасы)
...
))){
$class .= ' my-body-class';
}
//если нужна какая то логика, то можно использовать arg()
//--конец
if (isset($class)) {
print ' class="'. $class .'"';
}
}
как-то так, реализация этого кода в каждой теме разная, в fusion должно быть нечто подобное, так же часто темы любят определять класс для body в _preprocess_page, в этом случае запись для body будет выглядеть примерно так:
<body<?php print $body_class;?>>
В теге body у меня так:
Никакой функции, только переменные в id и class, которых в файле template.php нет.
Попробовал создать собственную функцию в template.php:
//--начало
//если нужно только на строго определенных страниц
if(in_array(strtolower($_GET['q']),array(
'user/register',
'user/login',
'user/password',
))){
$class .= 'width-body-class';
}
//если нужна какая то логика, то можно использовать arg()
//--конец
if (isset($class)) {
print ' class="'. $class .'"';
}
}
1)создал как видите свой класс "width-body-class"
2)Указал его в css и задал свойство width:1200px, но ничего не изменилось.
Видимо что-то не так в коде. Что, не могу пока разобраться.
У меня именно так. Но я не понимаю как определить класс в этой функции для boby?
Он там уже определяется, если не устраивает его обычная логика, перепишите алгоритм