Skip to main content
Темплейты для Drupal

Темизация Drupal 7

Как вы могли заметить, у блога новый дизайн. Сделанный мной с нуля - отфотошопленный, сверстанный и преобразованный в тему для Drupal 7. Темизация в drupal 7 с одной стороны упростилась (по крайней мере на мой взгляд), с другой стороны - возникли некоторые сложности с новым API, которое существенно изменилось по сравнению с предыдущей версией друпала. Если вы начинаете разбираться с созданием тем для Друпала сразу с 7 ветки - вам, вероятно, будет не так уж и сложно, особенно если вы уже знакомы с терминологией друпала и его устройством.

На первый взгляд структура темы не изменилась. Но это не так.

Это структура темы Drupal 6. По сути, файловая структура темы для друпала 7 ветки осталась той же (кроме того, что block.tpl.php стал не обязательным файлом, а содержание page.tpl.php значительно отличается от 6 версии, но об этом позже).

Во-первых, стал обязательным регион Content. Содержимое страницы теперь выводится как блок, который должен располагаться в этом регионе.

Во-вторых, упразднены некоторые переменные: $taxonomy, $mission (введен регион Hilited), $footer_message (выводится в регионе Footer), $help (введен регион Help). Соответственно, если этих регионов нет в вашей теме - надо добавить их в файл youtheme.info и затем вставить в нужное место файла page.tpl.php.

В-третьих, изменилась конструкция внедрения в шаблон регионов:

Так было в Drupal 6:

<?php if (!empty($right)): ?>
        <div id="sidebar-right" class="column sidebar">
          <?php print $right; ?>
        </div> <!-- /sidebar-right -->
      <?php endif; ?>

Так стало в Drupal 7

      <?php if ($sidebar_second): ?>
        <div id="sidebar-second" class="column sidebar"><div class="section region">
          <?php print $sidebar_second; ?>
        </div></div> <!-- /.section, /#sidebar-second -->
      <?php endif; ?>

Кстати, переменные сайдбаров получили более логичные и понятные имена: вместо $right и $left - $sidebar_first и $sidebar_second. Так же изменились имена переменных prymary links и secondary links, теперь это $main_menu и $secondary_menu.

В Друпал 6 код вывода навигации выглядел так:

<div id="menu">
  <?php if (isset($secondary_links)) { ?><?php print theme('links', $secondary_links, array('class' => 'links', 'id' => 'subnavlist')); ?><?php } ?>
  <?php if (isset($primary_links)) { ?><?php print theme('links', $primary_links, array('class' => 'links', 'id' => 'navlist')) ?><?php } ?>
</div>

В Друпал 7 блок навигации имеет следующий вид:

<div id="menu">
  <?php if (isset($secondary_menu)) { ?><?php print theme('links', $secondary_menu, array('class' => 'links', 'id' => 'subnavlist')); ?><?php } ?>
  <?php if (isset($main_menu)) { ?><?php print theme('links', $main_menu, array('class' => 'links', 'id' => 'navlist')) ?><?php } ?>
</div>

Это лишь часть изменений. Полный список можно изучить здесь и в переводе здесь. Единственное, чего я в официальном описании изменений не обнаружила - упоминания структурных элементов. Файл page.tpl.php более не содержит основных html тэгов (doctype, html, head and body). Основная структура html содержится в файле html.tpl.php в папке modules/system. Таким образом в шаблоне page.tpl.php находится только контент-содержащая часть кода страницы.

Более того, больше не используется шаблон box.tpl.php (полностью удален), а также не обязателен файл block.tpl.php.

В целом, процесс создания темы вовсе не сложный. Моя тема, конечно, еще требует доработки, но в целом - полностью работоспособна. Возможно, что через некоторое время, когда она будет полностью "причесана", эта тема отправится на drupal.org в паблик.

0

Comments