Вы здесь

Переопределение стилей

Переопределение стилей модуля

Стандартные и дополнительные модули могут содержать свои стили, которые определяют оформление тех данных, которые генерируют эти модули. Для переопределения этих стилей, их не следует редактировать напрямую в тех папках, где они находятся. Следует скопировать эти файлы в папку темы и переопределить эти файлы в .info-файле темы.

Возьмём для примера файл system-menus.css, который можно найти по адресу modules/system/system-menus.css. Для того, чтобы этот файл игнорировался, следует добавить в .info-файл темы следующую запись:

stylesheets[all][] = system-menus.css

Темы могут переопределять .css-файлы, которые включены в модули. Если нужно внести значительные изменения в исходный файл, то следует создать новый файл стиля с таким же названием как и файл стиля модуля в папке темы, после чего определить его в .info-файле. Например, файл стилей модуля System находится по пути modules/system/system-menus.css. Если сделать файл с названием system-menus.css в папке темы и определить его в .info-файле, то вместо файла в папке модуля будет использоваться файл из папки темы. То есть при совпадении имён файлов, приоритет будет отдан файлу из папки темы. Отметьте: файл должен иметь тот же медиатип, как и исходный файл, в противном случае Друпал сочтёт его другим файлом и замены файлов не произойдёт.

stylesheets[all][] = system-menus.css

При наличии такой записи, файл system-menus.css будет браться из папки темы, так как при совпадении названий файлов, Друпал будет отдавать предпочтение тому, который определён явно. При переопределении стилей, учитывайте следующие моменты:

  • Добавление любой записи в секцию stylesheet[] отменит правила используемые по умолчанию
  • При переопределении файлов, должен совпадать их медиатип. Если медиатип не совпадает, то определяемый файл будет считаться другим файлом и переопределения не произойдёт
  • Любая ссылка в файле стилей должна быть корректной. Дважды проверьте файл для свойства url() или правила @import, чтобы убедиться, что они указывают на верные ресурсы
  • Порядок стилей в HTML-секции <head> может измениться. Это может вызвать неожиданный эффект из-за каскадности применения стилей
  • Некоторые стили стандартных и дополнительных модулей могут загружаться в зависимости от условий. Определение их явной загрузки в .info-файле принудит их загружаться всегда
  • Если требуются незначительные изменения, подумайте об использовании CSS-селекторов в основном файле, а не переопределение всего файла полностью.
  • Изменение записей в .info-файле требует очистки его кеша.

Переопределение стилей базовой темы

Этот параграф относится к подтемам. Чтобы предотвратить перенос стилей от базовой темы в подтему, переопределяйте стили в .info-файле подтемы. Базовая тема и подтемы должны иметь следующую запись:

stylesheets[all][] = masterStyle.css

Если этот файл существует в подтеме, то он будет использоваться. Определение этого файла в подтеме необходимо для того, чтобы предотвратить его загрузку из базовой темы.