Как создать подтему (sub-theme) Drupal 7 и для чего это нужно

Аватар пользователя Totaku

Добрый день в этом посте я вам расскажу, как создать подтему (англ. sub-theme) для Drupal 7 и для чего это нужно. Чтоб не читать сей длинный опус предлагаю посмотреть видео:

Ну а для тех, кто лучше воспринимает информацию визуально вот некая расшифровка видео.

Для чего это нужно

Вариант №1. Скачали вы тему с d.org или где-то ее купили, есть большая вероятность того, что вас эта тема устраивает не полностью. И вы начинаете вносить в нее какие-то изменения. Но вот автор темы выпустил обновления, вы не думая обновились и все вроде бы прекрасно, но все ваши изменения пропали.

Вариант №2. Создали вы свою тему и все у вас прекрасно, но вот пришел заказчик, начальник или вы сами вдруг решили не много изменить тему под какой-то, например, праздник. Не переделывать же основную тему, а через какое-то время ее менять обратно.

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

Как создать

В друпал 7 есть стандартная тема Бартик, на ее основе мы будем делать подтему. Для начала переходим в папку sites/all/themes и создаем там папку с нашей темой, допустим swd. Называться наша тема должна на английском и начинаться с буквы. Внутри папки swd создаем файл swd.info, именно по этому файлу друпал поймет, что мы создали тему. Так же содаем папку css и в ней файл style.css. Так как мы создаём тему на основе Бартика, то рекомендую вам просто скопировать содержимое bartik.info в наш файл, с не большими изменениями:

name = SWD
description = SWD Bartik sub-theme
package = Core
version = 0.1
core = 7.x
base theme = bartik

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

regions[header] = Header
regions[help] = Help
regions[page_top] = Page top
regions[page_bottom] = Page bottom
regions[highlighted] = Highlighted

regions[featured] = Featured
regions[content] = Content
regions[sidebar_first] = Sidebar first
regions[sidebar_second] = Sidebar second

regions[triptych_first] = Triptych first
regions[triptych_middle] = Triptych middle
regions[triptych_last] = Triptych last

regions[footer_firstcolumn] = Footer first column
regions[footer_secondcolumn] = Footer second column
regions[footer_thirdcolumn] = Footer third column
regions[footer_fourthcolumn] = Footer fourth column
regions[footer] = Footer

Самое главное в нашем файле, это строка base theme = bartik, где bartik машинное имя родительской темы. На нашем сайте заходим в Оформление и видим, что появилась наша тема, включаем ее по умолчанию и переходим на главную страницу. Видим, что тут слегка все перекошено. Все это потому, что у нас пустой css, вы можете заполнять его своими свойствами или полностью скопировать css родительской темы и вносить свои изменения.

Так же можно переопределять шаблоны рендеринга страниц в нашей теме. Например, из папки themes/bartik/templates мы можем скопировать файл page.tpl.php в нашу тему (рекомендую в нашей теме создать папку templates и копировать туда, но можно и в корень нашей темы). Этот файл отвечает за рендеринг страниц нашего файла. Для того чтобы убедиться, что все работает предлагаю удалить из него, например, вот это:

<?php if ($main_menu): ?>
      <div id="main-menu" class="navigation">
        <?php print theme('links__system_main_menu', array(
          'links' => $main_menu,
          'attributes' => array(
            'id' => 'main-menu-links',<h3></h3>
            'class' => array('links', 'clearfix'),
          ),
          'heading' => array(
            'text' => t('Main menu'),
            'level' => 'h2',
            'class' => array('element-invisible'),
          ),
        )); ?>
      </div> <!-- /#main-menu -->
    <?php endif; ?>

Этот кусок отвечает за вывод main menu (основного меню). Обязательно очищаем кэш, переходим на главную страницу и видим, что меню в верху страницы больше нет, а значит все подключилось и прекрасно работает.

В каждой теме есть файл template.php. В нем находится вся логика нашей темы. Вы можете его создавать, а можете и не создавать. Первоначально выполняется то что находится в файле подтеме, а только потом темы родителя, так что дублировать его содержимое не нужно. Подробней о создании подтем можно почитать на д.орг.

Вместо заключения

Если вам понравилось видео, подписывайтесь на мой канал и заходите в мой блог. А если вы добрый, щедрый и любите хорошие начинания вы можете поддержать автора.

Ключевые слова:
Тип материала:
Версия Drupal:
2 Спасибо

Комментарии

Аватар пользователя bumble
bumble 4 месяца назад 1

На главной

Аватар пользователя Studio VIZA
Studio VIZA 4 месяца назад

Теперь пожалуйста, аналогичный ролик про Восьмёрку, будьте добры. И фоновая музыка в первом ролике была громче.

0 Спасибо
Аватар пользователя Totaku
Totaku 4 месяца назад

Сделаю, но чуть позже. С музыкой разберусь.

0 Спасибо
Аватар пользователя Totaku
Totaku 3 месяца назад 1
Аватар пользователя mozh
mozh 3 месяца назад

работаю с друпалом года 3-4 и НИКОГДА не создавал подтему.
получите кучу хлама в виде css, js, который не будете использовать

проще собрать тему на основе верстки и все, не нужно будет переопределять стили и т.д.

примеры варинатов 1 и 2 справедливые, но был у меня случай с покупкой темы в итоге отказался от неё и сделал с нуля

0 Спасибо
Аватар пользователя bumble
bumble 3 месяца назад

Это материал скорее для любителей установить тему и полезть своими грязными лапами в ее код (стили, шаблоны и т.п.) оставляя там свои говноправки.

0 Спасибо