суббота, 11 декабря 2010 г.

Создание новой темы оформления для CMS Drupal – это легко!

Темизация макета, создание новой темы с нуля для сайта на Drupal не так сложно, как может показаться на первый взгляд. Тема оформления в CMS Drupal – это не более, чем просто стандартный html макет, содержащий немного PHP кода, добавленного в нужные места макета. Этот PHP код является стандартным и Вы можете просто скопировать его и вставить в нужное место Вашего макета.

Возможно, Вы уже посмотрели темы оформления, которые поставляются в пакете с CMS Drupal или которые свободны для скачивания на официальном сайте Drupal.org и вздохнули с разочарованием при виде кода этих тем. Для некоторых, код выглядит очень запутанным.

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

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

Вы можете найти полезную информацию, если посмотрите на исходные файлы page.tpl.php и node.tpl.php в папке /modules/system вашего сайта.

Главный файл темы оформления в Drupal - page.tpl.php. Сделайте копию макета Вашего сайта и переименуйте его в page.tpl.php. Затем, просто вставьте приведенный в дальнейшем в инструкции код в свой макет (в нужные места файла page.tpl.php).

В начало файла добавьте:

<html xmlns="http://www.w3.org/1999/xhtml" lang=" <?php print $language -> language ?> " xml:lang=" <?php print $language -> language ?> " dir=" <?php print $language -> dir ?> ">

Это рекомендованный способ начать вашу страницу, вместо стандартного тега html.

В раздел head макета добавьте:

<head>
<title> <?php print $head_title ; ?> </title>
<?php print $head ; ?>
<?php print $styles ; ?>
<?php print $scripts ; ?>
</head>

Этот код соответственно добавляет заголовок для сайта, стили и скрипты.

Большинство сайтов имеют правые и левые колонки, располагающиеся рядом с основным содержанием страницы. Эти колонки, как правило, содержат различную полезную информацию (например, вход, меню, недавние комментарии и т.д.). В Drupal эти информационные области называется "Блоки". Вы можете настроить отображение блоков на сайте в специальном разделе "Блоки" (Управление > Конструкция сайта > Блоки, admin/build/block).

В Drupal для того, чтобы знать, куда поставить блок, макет должен содержать специальные «метки».А для этого нужно добавить несколько "меток" в макет главного файла темы – page.tpl.php. Такие метки называются «Регионы». Очень важно добавить хотя бы одну колонку (то есть регион) в Ваш макет, чтобы в дальнейшем отображалось меню администратора и форма входа на сайт. Ниже Вы видите код для добавления левого и правого региона:

<?php print $left ; ?>

...и/или...

<?php print $right ; ?>

Drupal сайт по умолчанию уже содержит три вида меню. Первое – это меню администратора сайта. Основное меню сайта называется Primary Links. Существует также меню Secondary Links, которое можно использовать как самостоятельное меню, либо как меню второго уровня (подменю) для Primary Links. C помощью CSS Вы можете легко изменить стиль отображения всех меню на сайт.

Есть несколько вариантов добавить места для Primary Links и Secondary Links прямо в макет сайта.
Простой вариант. Его нужно использовать, если Вы точно уверены в наличии и отображении во всех разделах сайта и основного меню Primary и его подменю:

<div id="primary">
<?php print theme ( 'links' , $primary_links ); ?>
</div> <!-- /#primary -->

<div id="secondary">
<?php print theme ( 'links' , $secondary_links ); ?>
</div> <!-- /#secondary -->

Если Вы считаете, что на некоторых страницах сайта меню может полностью или частично отсутствовать, то лучше использовать следующий код (он такой же что и первый вариант, только использует проверку на наличие меню):

<?php if ( $primary_links ): ?>
<div id="primary">
<?php print theme ( 'links' , $primary_links ); ?>
</div> <!-- /#primary -->
<?php endif; ?>

<?php if ( $secondary_links ): ?>
<div id="secondary">
<?php print theme ( 'links' , $secondary_links ); ?>
</div> <!-- /#secondary -->
<?php endif; ?>

На данный момент можно сказать, что Вы добавили в свой макет все необходимые второстепенные блоки. Теперь пришло время добавить область, в которой будет отображаться основное содержание Вашего сайта.
Найдите нужное место в шаблоне, куда Вы хотите добавить основное содержание (как правило, в центре страницы, после заголовка и между колонками) и вставьте следующий код:

<?php print $breadcrumb ; ?>
<?php if ( $mission ): ?> <div id="mission"> <?php print $mission ; ?> </div> <?php endif; ?>

<div id="content">
<?php if ( $title ): ?> <h1 class="title"> <?php print $title ; ?> </h1> <?php endif; ?>
<?php if ( $tabs ): ?> <div class="tabs"> <?php print $tabs ; ?> </div> <?php endif; ?>
<?php if ( $show_messages ): print $messages ; endif; ?>
<?php print $help ; ?>

<?php print $content ; ?>
</div>

Для добавления регионов колонтитула и подвала (футера) вставьте следующий код внизу вашей макета:

<?php if ( $footer_message || $footer ) : ?>
<div id="footer-message">
<?php print $footer_message . $footer ; ?>
</div>
<?php endif; ?>

В конце файла page.tpl.php Вы должны обязательно (для правильной работы сайта) вставить следующий код:

<?php print $closure ; ?>
</body>
</html>

В 6 версии CMS Drupal, для того чтобы система опознала Вашу тему оформления, необходимо создать специальный файл с расширением .info – НазваниеТемы.info (Название темы – латиницей). Просто создайте пустой файл, и вставьте в него следующий код, добавив от себя только название темы и ее описание. Сохраните этот файл в папке Вашей темы.

name = НазваниеТемы (латиницей)
description = Описание Вашей темы
core = 6.x
engine = phptemplate
stylesheets[all][] = style.css
regions[left] = Left sidebar
regions[right] = Right sidebar
regions[content] = Content
regions[footer] = Footer

Как Вы видите, в этом файле также перечисляются регионы, которые Вы используете в своем макете. Вы можете здесь добавить новые регионы, либо удалить имеющиеся. При добавлении/удалении регионов не забывайте вносить изменения в главный файл темы оформления – page.tpl.php.

В целом костяк новой темы оформления для Вашего сайта готов к использованию.

Оригинал статьи: http://www.startdrupal.com/node/51