Копаю темизацию, прописать стили на морду - ничего сложного, а если задаться целью темизировать админку в общем дизайне сайта - начинают мешать таблицы стилей, подгружаемые модулями.
Каскадные стили такие каскадные...
Решения:
1. Править файлы css, которые лежат в папках с модулями - некошерно.
2. Отключить файлы CSS и прописать стили в своих CSS - они будут грузиться всегда, вне зависимоси от участия модуля в рендере страницы.
Решил заменить таблицы стилей модулей своими, используя решение с ДрупалКукБука:
в template.php
своей темы в функции имя-темы_preprocess_page
добавил:
foreach ( $vars['css']['all']['module'] as $css =>$val ){
$vars['css']['all']['module'][$path_to_theme . '/css/' . basename($css)] = $val;
unset($vars['css']['all']['module'][$css]);
}
$vars['styles'] = drupal_get_css($vars['css']);
unset($path_to_theme);
Остается скопировать файлы CSS из папок с модулями в подпапку /css своей темы, и править их как угодно.
Недостатки - при добавлении модулей надо помнить о необходимости копирования его стилей в свою тему.
решено, вопрос - по нагрузке (я не ощутил) и кошерности кода (N лет назад кодил на vb6, php - со словарем)
Комментарии
http://drupalblog.ru/blog/pereopredelenie-css-stilei-modulei-cherez-temu...
Хорошее решение - можно править только таблицы стилей выбранных модулей, не надо копировать все CSS.
Жаль, что раньше не видел.
upd - в своем решении забыл про
$vars['styles'] = drupal_get_css($vars['css']);
, исправил в топике.Сделал проверку на наличие файла стиля в папке темы:
foreach ( $vars['css']['all']['module'] as $css =>$val ){
$theme_css=$path_to_theme . '/css/' . basename($css);
if (file_exists($theme_css)) {
$vars['css']['all']['module'][$theme_css] = $val;
unset($vars['css']['all']['module'][$css]);
}
}
$vars['styles'] = drupal_get_css($vars['css']);
unset($path_to_theme);
Теперь как с темплейтами - если есть в папке темы, берется он, если нет - дефолтный.
Интересно, насколько это увеличивает нагрузку, ведь работает при каждом рендере?
Нну, не знаю, я не профи, но...
Мне хватает "за глаза" файла локал.цсс в папке моей темы. Переписываю все через него... и все нормально работает. В крайний случай, если вы профи-темер, есть же стартовые темы типа тао, цсс-резет и т.д.
Некоторые модули предусматривают переопределение css - например Administer -> Themes -> Configure -> Global settings -> "Path to custom nice menus CSS file