Вы здесь

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

Добавление стилей через .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.