Я много раз сталкивалась с тем, что стили некоторых модулей нужно немного править, чтобы они соответствовали дизайну, тем более, если в вашей теме переписаны выводы стандартных функций. Править CSS файл прямо в папке модуля – не резонно, так как при очередной смене версии модуля файл стилей так же заменится и придется ещё раз делать все изменения. (!)
Подключение CSS модуля через файл темы тема.info не есть правильно. Так как там мы не сможем проверить включен ли модуль и существует ли он вообще, ну мало ли – отвалился.
Поэтому этот вариант сразу убираем.
Нам нужно чтобы стили грузились только один раз и чтобы грузились только наши css стили, и, только если модуль включен. К чему нам лишнее? Чтобы каждый раз, при обновлении модуля не править стили модуля, нужно перенести эти файлы в папку с вашей темой и подключить их через template.php вашей темы. Для этого:
template.php и добавьте туда строки (на примере 'admin_menu.css' и 'forum.css'):То есть, при отключении модуля его файл CSS грузится не будет.
Очистите кеш друпала и обновите страницу в браузере (так же без кеша). Проверьте, теперь грузятся только ваши измененные стили.
ПРИМЕЧАНИЯ:
admin/settings/performance), то атрибут TRUE добавляйте, только, когда вы полностью закончили изменение CSS файла. В противном случае, из-за drupal-кеширования, новые изменения могут применяться не сразу. И не забывайте чистить кеш.template.php темы есть такая строка: global $theme_path;, то вместо path_to_theme('theme', 'название_темы') можете использовать $theme_path.Таким образом, вы можете переопределить любое количество стилей модулей через свою тему. Можно переопределить все системные стили через тему и настроить все так как вам нужно, без лишних и повторяющихся CSS правил, что позволит сократить общий размер страниц.
12 Комментариев [Нет новых]
Я всегда так делаю. И почему, интересно мы не можем проверить включен модуль или нет если мы их сами включаем в админке?
Одно дело смотреть в админке, отвалился модуль или нет и другое, это сделается «само». А модули, хоть и редко, но имеют шанс отвалиться. Оно, конечно, ничего страшного в лишних километрах CSS кода, который будет мотаться зазря и все же… подключение CSS файлов через
template.phpсчитается хорошим тоном, вот и все.Да и удобнее, имхо.
К тому же не придется делать лишних движений, если модуль отвалился или мы забыли и отключили его, тем более, если через тему подключено с десяток файлов или больше. А при подключении CSS таким образом можно без лишних хлопот отключить модуль в админке, например, на время… или совсем и не вспоминать про правку файла
тема.info. Плюс, в условие можно вписать не только проверку на «наличие» модуля, а также, задать путь, по которому выводить данный CSS файл, например, только при добавлении/редактировании материала и т.д.Ну что значит «отваливаться»? Если на сайте начинает что то отваливаться, то надо принимать какие то серьезные меры, а не заниматься отключением CSS файлов.
Как правило модули «отваливаются» при обновлениях… и бывает, что не сразу можно заметить, что «чего-то» не хватает.
Все равно это не рационально, можно наверно, сделать как то попроще.
Например, обработать в цикле $vars['css'] чтобы убрать/заменить некоторые CSS файлы не вызывая каждый раз drupal_add_css.
Или хотя бы вместо многократного вызова module_exists, сохранить все загруженные модули в массив с помощью module_list.
Интересный вариант, надо будет попробовать.
А что же с файлами css самих модулей. Они же будут загружаться наряду и с этими из темы. Так что решение неверное.
В том то и дело, что файлы самих модулей грузится не будут. Если вы подключаете файл модуля через тему, то от модуля он уже не грузится — это предусмотрено друпалом.
каким образом?
Если в модуле(в шаблоне или в хуке) добавляем css через drupal_add_css, то они сами оттуда не уберутся. Чтобы его убрать надо в функциях препроцесса темы пересобирать переменную $styles.
Принцип работы виден также в модуле jquery_update - только для скриптов.
Оно конечно может и будет работать - т.к. из файлов темы стили будут по док-ту ниже чем стили от модуля и переопределят. Но посмотрите по html-у - старые подключаются же?
p.s. Запостить комент тут - проблема. Капча работает неверно. После ошибки формы(ссылку с примером нельзя добавить - с drupal.ru) капча не обновляется и на это потом ругается
Вот как-то так…
$styles = drupal_get_css();
(!) Если имена файлов оригинальные, то будут грузится только CSS файлы указанные в теме (положить их можно хоть в files), приоритет у них будет выше.
Начиная с D-6.3, можно переопределять файлы через файл тема.info (только без дополнительных условий, кому они не нужны — самое оно)
Вы думаете я ни разу не смотрела?
p.s. Да, незарегистрированные пользователи не могут добавлять ссылки. Про капчу знаю, после перезагрузки формы она не обновляется.
Сделал все по вашей методе на D-5.23. Новые файлы css добавились. Однако старые не удалились.
В метках к этой записи нет метки «drupal 5». Это потому что с D5 не опробован данный метод… там по-другому как-то.
Что ты об этом думаешь?