.info-файлы
Добавить любой файл стиля можно в файле .info. Это рекомендуемый путь по добавлению стилей. Каждый стиль должен иметь свой медиатип и вы можете определить любое их количество. До Drupal 6, использовался файл style.css, который находился в папке темы и загружался автоматически. Это не изменилось и в Drupal 6, но если вы вручную определите хотя бы один файл стиля, то style.css автоматически загружаться уже не будет, будут загружаться только указанные вами файлы (см. правила применения значений по умолчанию).
Если в .info-файле вы определяете загрузку файла style.css, то вы также должны явно определить и загрузку файла print.css.
stylesheets[all][] = style.css
stylesheets[print][] = print.cssВ примере выше, в первых скобках определён медиатип, а вторые скобки нужны, чтобы получить несколько файлов. Это очень простой путь получения массивов в PHP с использованием скобок.
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.
.info-файлы
Подтема наследуют все стили определённые в базовой теме. Правила написания .info-файлов для подтем такие же как и для базовых тем и значения по умолчанию в этих файлах применяются по тем же правилам.
theme_a:
stylesheets[all][] = theme-a.css
theme_b:
base theme = theme_a
stylesheets[all][] = theme-b.css
theme_c:
base theme = theme_b
stylesheets[all][] = theme-b.css
stylesheets[all][] = theme-c.cssВ примере выше, темами b и c наследуются стили темы a. В отношении темы c нельзя сказать, что она наследует стиль темы b, т.к. он был определён заново. Отметьте: вы должны избегать использования названия style.css для каждой подтемы когда пытаетесь работать с наследованиями.
Comments
Post new comment