Вы здесь

0

Добрый день,
Написал небольшой модуль в котором подключаю стили модуля через

function mymodule_init() {
  // ...
  $path_to_css = $path . '/css/style.css';
  drupal_add_css($path_to_css, "theme");
}   

Всё работает хорошо, до момента включения сжатия и объединения стилей в настройках производительности. При включении эти стили перестают подгружаться. Подскажите, пожалуйста, почему так происходит?

Версия Drupal: 
7.x
Вопрос задан 16.08.2015 - 17:03
Аватар пользователя Quty
Quty
34

Кеш чистил
Свойства не перекрываются. На элементах, к которым применяются стили модуля вовсе не применяются никакие стили при включении агрегации.
Доп модуль это конечно же хорошо, но мне казалось это тривиальная задача - работа стилей кастомного модуля О,о и она не должна требовать установки другого модуля - Остальные же модули на сайте как то работают со своими стилями и с агрегацией и без. Проблема только в моём модуле.

То есть видно drupal_add_css недостаточно... Я что-то забыл сделать, может этот файл стилей нужно ещё где то указать?

Комментарий оставлен 16.08.2015 - 17:48

UPD:
stylesheets[all][] = css/style.css
в INFO файле модуля почему то совсем не срабатывает.

Комментарий оставлен 16.08.2015 - 18:57

Итак... Проблема решена.

Подключение в функции hook_preprocess_html сработало - но потребовало убрать параметр "theme"

function rdgblocks_preprocess_html(&$variables) {
  // ...
  $path_to_css = $path . '/css/style.css';
  drupal_add_css($path_to_css);
}   

Теперь работает и с агрегацией и без.

Из странностей:
- Действительно не могу найти откуда взял параметр "theme", но без него в функции hook_init подключать стили не хотело - не работало ни с агрегацией ни без.
- Подключение стиля в описании модуля (info) строкой stylesheets[all][] = css/style.css ни к чему не приводит. Может кто-нибудь в курсе, чем это может быть вызвано?

PS: почему при ответе на свой же пост оно вынесло в комментарии сообщение от sas@drupal.org не в курсе.. Так задумано? О.о

Комментарий оставлен 16.08.2015 - 19:08

Ответы

0

А что значит второй параметр "them" в функции ? Не нашёл такого в апи.
Если это тип попробуйте file либо вообще без 2го параметра.

Ответ дан 16.08.2015 - 18:21

Если честно, уже и не помню, откуда взял этот шаблон с параметром "theme". Но вот что странно - без него или с file / inline - не работает подключение стилей. То есть вообще.

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

If CSS aggregation/compression is enabled, all cascading style sheets added with $options['preprocess'] set to TRUE will be merged into one aggregate file and compressed by removing all extraneous white space. Preprocessed inline stylesheets will not be aggregated into this single file; instead, they are just compressed upon output on the page. Externally hosted stylesheets are never aggregated or compressed.

Насколько понял, препроцессорное подключение (у меня подключается в инициализации модуля) не позволяет агрегировать эти стили со всем остальными, а они будут подключены отдельно. Но у меня они почему то не подключаются ((

Комментарий оставлен 16.08.2015 - 18:39
0

В доках к hook_init ясно сказано, что не нужно использовать эту функцию для подключения стилей, а нужно добавить файл стилей в info файл. Если это не сработало, то скорее всего виноваты вы - либо кэш не почистили, либо опечатку сделали, или еще что. А может эти стили подхватываются только при включении модуля? я не проверял, но и может и так оказаться.

Ответ дан 16.08.2015 - 21:52
-1

А зачем подключать стили через function ??? (это почти не вопрос)

Ответ дан 16.08.2015 - 18:18
Аватар пользователя embed
embed
-4

Как минимум потому, что появилась эта тема

на пустом месте, кстати ... ))

Комментарий оставлен 17.08.2015 - 10:02