Создание темы для Drupal 6. Добавление стилей

Аватар пользователя artur.baranok
Опубликовано вт, 07/14/2015 - 12:54 пользователем artur.baranok
Форумы: 

Файл .info

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

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

Добавьте ключ
Добавьте служебную запись stylesheets[]
Определите медиатип добавляемого стиля
Добавьте значение
Введите адрес файла со стилями

Примеры:
; Add a stylesheet for all media
stylesheets[all][] = theStyle.css
; Add a stylesheets for screen and projector media
stylesheets[screen, projector][] = theScreenProjectorStyle.css
; Add a stylesheet for print media
stylesheets[print][] = thePrintStyle.css

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

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

Между определённым медиатипом и знаком «=» используйте пустые квадратные скобки
В HTML-секцию , стили будут добавляться в том же порядке, в котором они перечислены в .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() возвращает значения всех найденных стилей и передаёт их переменной. Таким образом, при посещении страницы http://example.com/user, будет загружен файл user.css. Это простой, но очень показательный пример того, чего можно добиться использованием файла template.php.