Вы здесь

Добавление стилей

Добавление стилей через .info-файл

Добавить стиль можно через .info-файл — это рекомендуемый путь по добавлению стилей. Каждый стиль должен иметь свой медиатип и можно определить любое количество добавляемых стилей.


В Друпале 5 стандартным файлом стилей был style.css, который размещался в папке темы и загружался автоматически. Это не изменилось и в Друпале 6, при условии, что в .info-файле нет ни одной записи для группы stylesheets[]. Если хоть одна запись есть, то будут загружаться только явно определённые этой группой файлы.

Добавить новый стиль очень просто. Пример:

; Добавление стилей для всех медиа
stylesheets[all][] = theStyle.css
; Добавление стилей для экранов и проекторов
stylesheets[screen, projector][] = theScreenProjectorStyle.css
; Добавление стилей для печати
stylesheets[print][] = thePrintStyle.css

В примере выше, после записи stylesheets, в первых скобках определён медиатип, а вторые скобки нужны, чтобы получить несколько файлов. Это очень простой путь получения массивов в PHP с использованием скобок.

При добавлении стилей, учитывайте следующие моменты:

  • Между определённым медиатипом и знаком = используйте пустые квадратные скобки
  • В HTML-секцию <head>, стили будут добавляться в том же порядке, в котором они перечислены в .info-файле
  • Файлы могут размещаться в других папках. Например: stylesheets[all][] = stylesheets/styleName.css
  • Содержание .info-файла кешируется. Добавление или удаление стилей не будут применены до того, как будет очищен кеш
  • При работе со стилями (разработке сайта) отключайте оптимизацию CSS-файлов. Если оптимизация стилей включена, то изменения не будут видны до того, как будет очищен кеш

Добавление стилей через файл template.php

Так как .info-файл — это статичный текстовый файл, то определённые в нём стили загружаются всегда. Для расширенного оформления, дополнительный контроль может быть получен с использованием API-функции drupal_add_css() в файле template.php.

function phptemplate_preprocess_page(&$variables) {
  if (file_exists($section_style = path_to_theme() .'/'. arg(0) .'.css')) {
    drupal_add_css($section_style);
    $variables['styles'] = drupal_get_css();
  }
}

То, что показано в примере выше, называется переменной функцией или предпроцессовой. Эта функция добавляет стиль в зависимости от системного адреса документа. Для определения системного адреса используется функция arg(). Затем, функция drupal_get_css() возвращает значения всех найденных стилей и передаёт их переменной. Таким образом, при посещении страницы user, будет загружен файл user.css. Это простой, но очень показательный пример того, чего можно добиться использованием файла template.php.

Комментарии

Изображение пользователя Чуваш

что-то в инфо добавил, а на деле как-то не появляется - на странице в итоге только куча стилей, оставшихся с garland'a.