Drupal → Создание подтемы (sub-theme)

15.07.2011

Что такое подтема

Подтема (sub-theme) — это тема, которая наследует функционал другой темы. Под функционалом понимается — шаблоны (файлы tpl.php), css/js файлы, настройки, функции определённые в template.php.

Зачем нужны подтемы

Главный девиз Drupal — "Не трожь ядро!", именно для этого и нужны подтемы — чтобы можно было изменить какую то часть базовой темы (входящую в ядро друпала или скачанную с официального сайта) не трогая её файлы.

Например в подтеме можно подключить свой css файл или изменить один из шаблонов, при этом родительскую тему можно будет спокойно обновлять, не боясь затереть сделанные изменения.

Как создать подтему

В папке sites/all/themes создаём новую директорию, например mybartik.

В этой директории создаём .info файл, например mybartik.info.

В этом файле прописываем информацию о подтеме и о родительской теме:

name = My Bartik
description = Modified Bartik theme
core = 7.x
engine = phptemplate
base theme = bartik

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

Активируем тему.

Как переопределять css файлы

Скопировать css файл из родительской темы и подключить его в .info файле подтемы. Например:

stylesheets[all][] = css/style.css

Очистить кэш.

Теперь вместо themes/bartik/css/style.css будет подключаться файл sites/all/themes/mybartik/css/style.css.

Если нужно отключить какой-то css файл, то можно просто очистить его содержимое в подтеме.

Как переопределять js файлы

Всё по аналогии, только в .info файле нужно прописывать:

scripts[] = script.js

Как переопределять функции темизации

Так же как и в обычной теме — реализовать в template.php соответствующий хук с именем подтемы в качестве префикса. Сбросить кэш.

Preprocess и process функции переопределять нельзя (точнее можно, но делается это уже из своего модуля), можно только добавить собственные.

Как переопределять шаблоны

Скопировать шаблон из родительской темы, изменить его, сбросить кэш.

---
Вольный перевод статьи Creating a sub-theme.

Написанное актуально для
Drupal 7
Похожие записи

Комментарии

function bartik_preprocess_node(&$variables) { ... }

на

function mybartik_preprocess_node(&$variables) { ... }

пашет в template.php. D7.14.

Гость
20.06.2013, 18:35

Будте добры поподробней
Так же как и в обычной теме — реализовать в template.php соответствующий хук с именем подтемы в качестве префикса. Сбросить кэш.

Несовсем понятно..

Гость
21.11.2013, 01:10

Да, только вот про модуль color, что bartik-субтема не подключает ничего не сказано. Надо разбираться.

Олжас
30.03.2017, 14:43

Я буду тысячу раз благодарен кто запишет видео и покажет нам "Друпальным Чайникам" как и что переопределяется!!! не совсем а то понятно

Добавить комментарий