Создаю свою первую тему для Drupal. Часть 3.
Постановка задачи
Как показывает практика, если пропустить этот этап, то в результате получится достаточно унылый шит.
Итак. Задача проста до безобразия: воспроизвести средствами друпал нынешний вид и функционал моего сайта в моей Varvashenia CMS v.3.x.

Для этого нужно воспроизвести следующие фичи:
- внешний вид сайта
- структуру сайта
- разобраться с хлебными крошками
- разобраться с новостями, включая краткий вывод последнего десятка самых свежих в любом заданном месте сайта
- RSS
- sitemap.xml для поисковиков
- форма обратной связи
- про галереи забываю, ибо их я тут не использую
- элементы SEO, включая title, keywords, description и человеко-понятные ссылки
Воспроизведение существующего сайта в друпал используя свою тему
Делим сайт на составные части:
Начну с простого - тупо повторю внешний вид.
Для этого нужно попытаться понять на какие блоки-регионы нужно бить сайт:

Получились следующие куски:
- Header - заголовок сайта
- Breadcrumbs - хлебные крошки - показывает на каком свете находится посетитель. Теоретически относится к header'у
- Main menu - главное меню сайта
- Page title - заголовок страницы. Можно выделить в отдельный блока, хотя по сути это всё-таки часть контента
- Content - содержимое сайта
- Footer - подвал сайта
Правлю test.info:
Беру свой любимый Notepad++, открываю в нём sites/all/themes/test/test.info и вбиваю там нужные мне регионы и фичи. Попытаюсь втиснуться в 4 региона и одну фичу (смена названия сайта). Попутно держу открытым хелп по файлам .info. Вот чего получилось:
; $Id: test.info,v 0.1 2007/06/08 05:50:57 dries Exp $
name = Test themeБик .Юdescription = varvashenia.ru drupal theme.
version = VERSION
core = 6.x
engine = phptemplate; Information added by drupal.org packaging script on 2008-12-11
version = "0.1"
project = "drupal"
datestamp = "1229018427"
regions[left] = Left sidebar
regions[content] = Content
regions[header] = Header
regions[footer] = Footer
features[] = name
stylesheets[screen][] = screen.css
stylesheets[print][] = print.css
С инфо пока разобрался.
Правлю page.tpl.php:
Теперь беру page.tpl.php и пытаюсь привести внешний вид к более-менее похожему на то, что требуется, почитывая список функций от page.tpl.php.
Вот мой page.tpl.php который почти полностью соответствует тому, чего мне нужно:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="<?php print $language->language ?>" xml:lang="<?php print $language->language ?>" dir="<?php print $language->dir ?>">
<head>
<title><?php print $head_title ?></title>
<?php print $head ?>
<?php print $styles ?>
<?php print $scripts ?>
<script type="text/javascript"><?php /* Needed to avoid Flash of Unstyle Content in IE */ ?> </script>
</head>
<body>
<div id="wrapper">
<div id="header" class="noprint">
<h1 class='site-name'><a href="<?php print $front_page ?>" title="<?php print t('Home') ?>"><?php print $site_name ?></a></h1>
</div>
<div class="noprint"><?php print $breadcrumb ?></div>
<div id="content">
<h1 class="title"><?php print $title ?></h1>
<div id="main">
<div class="tabs"><?php print $tabs ?></div>
<?php if ($show_messages) { print $messages; } ?>
<?php print $help ?>
<?php print $content; ?>
<?php print $feed_icons; ?>
</div>
</div>
<div id="menu" class="noprint"><?php print $left ?>
<br class="clear" />
</div>
<div id="footer" class="noprint">
<?php print $footer_message ?>
<?php print $footer ?>
</div>
<?php print $closure ?>
</div>
</body>
</html>
Урра!
Сайт уже почти похоже на мой. И почти ничего не нужно было ломать в моём-же CSS.

Осталось подшлифовать мелочи в области меню и тупо создать нужную мне структуру сайта. Плюс ещё придётся поковыряться в области как сгенерить sitemap.xml и формы. Хотя скорее всего уже есть готовые модули для этого. Что касается SEO - то пока мне просится использовать дополнительные поля CCK.
Попутно освоил как добавить новый регион. Для этого в info файле заявляем про него в виде regions[test_region] = My Test Region, а в page.tpl.php используем содержимое региона, который попадает в переменную $test_region.
На это считаю поверхностное ознакомление законченным - нужно брать более жизненный пример и тупо его делать.
Всем спасибо. Все свободны. Если есть вопросы и/или предложения - заполняем форму обратной связи.




Обзор AgeStar NSB3AS1T NAS для 3.5" SATA HDD
Комментариев и оценок: 183
Обзор AgeStar NSB3AS1T NAS для 3.5" SATA HDD - сетевого хранилища на базе 3.5" SATA HDD с возможностью подключения по USB. 10/100 Mbit, SATA 3.5"
AgeStar FUBCP USB2.0 to IDE/SATA Adapter
Комментариев и оценок: 93
AgeStar FUBCP - подключение IDE или SATA 2.5",3.5" или 5.25" устройств через USB
Обзор жесткого диска HDD 2ТБ Western Digital WD20EARS
Комментариев и оценок: 73
Краткий обзор жесткого диска HDD 2ТБ Western Digital WD20EARS-00MVWB0 с фотографиями и тестами производительности.Многофункциональное устройство Canon LaserBase MF3228
Комментариев и оценок: 52
Многофункциональное устройство Canon LaserBase MF3228. Описание, впечатления от работы, ссылка на драйвера.
AgeStar SUB2O1 2.5" SATA External Enclosure
Комментариев и оценок: 51
Обзор с картинками и тестами AgeStar SUB201 - внешней USB коробки для 2.5" SATA винчестеров.