Смена CSS в page.tpl.php

Главные вкладки

Аватар пользователя Arseniy Arseniy 29 апреля 2010 в 20:22

Здравствуйте.

Помогите, пожалуйста, решить такую задачу. Есть тема, построенная на DIV-ах, есть соответственно стили для этих дивов. Хочется при загрузке страницы для определенного дива изменить по условию фоновую картинку. Пытаюсь подключить CSS-файл с перекрывающим стилем:

#r2_c4 {
background-image: url(images/override.jpg);
}

Использую такой код:

if (условие) {
drupal_add_css(path_to_theme().'/override.css','theme');
}

Функция drupal_add_css возвращает массив, в котором файл стиля есть. Но сам стиль не обрабатывается. Видимо я что-то недопонимаю в принципе подключения стилей. Как можно решить такую задачу?

PS Модуль theme_key использовать не хочется.

Комментарии

Аватар пользователя Arseniy Arseniy 29 апреля 2010 в 20:46

"xxandeadxx" wrote:
где пытаетесь подключить?

Пробовал и просто в коде и в HEAD. Но чувствую, что-то не так. Пока вывел просто картинку в диве, однако хочется разобраться.

Аватар пользователя xxandeadxx xxandeadxx 29 апреля 2010 в 20:51

"просто в коде" это где? в heade нужно подключить с помощью html кода, drupal_add_css там не сработает ибо массив со стилями уже собран в переменную $styles

Аватар пользователя Arseniy Arseniy 29 апреля 2010 в 20:55

"xxandeadxx" wrote:
в heade нужно подключить с помощью html кода, drupal_add_css там не сработает ибо массив со стилями уже собран в переменную $styles

Тогда где? Подозреваю, что где-то в template.php, но пока не понял куда чего Sad

Аватар пользователя Xermit Xermit 9 мая 2010 в 1:19

Мучаюсь точно с тем же вопросом.

Пробовал как посоветовал xxandeadxx

но этот вариант совсем не срабатывает.

срабатывает только если я просто в не функций выполняю в template.php

drupal_add_css(path_to_theme() .'/uc_product.css', 'theme');

!!!!Важно!!!!
С отключенной агрегацией CSS стилей в один css файл в настройках производительности.

Стоит включить тоже не работает.

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

Аватар пользователя Xermit Xermit 9 мая 2010 в 1:52

Мой вариант в template.php вне phptemplate_preprocess_page заработал и при включенной агрегации всех CSS в один файл, надо только потом принудительно очистить кэш, так как только в этом случае снова пересобирается единый css файл. Иначе старый будет подгружаться, в котором нет того что мы в теме добавили.