Создаю свою первую тему для Drupal. Часть 3.

Постановка задачи

Как показывает практика, если пропустить этот этап, то в результате получится достаточно унылый шит.

Итак. Задача проста до безобразия: воспроизвести средствами друпал нынешний вид и функционал моего сайта в моей Varvashenia CMS v.3.x.

Внешний вид моего сайта на момент написания материала

Для этого нужно воспроизвести следующие фичи:

  1. внешний вид сайта
  2. структуру сайта
  3. разобраться с хлебными крошками
  4. разобраться с новостями, включая краткий вывод последнего десятка самых свежих в любом заданном месте сайта
  5. RSS
  6. sitemap.xml для поисковиков
  7. форма обратной связи
  8. про галереи забываю, ибо их я тут не использую
  9. элементы SEO, включая title, keywords, description и человеко-понятные ссылки

Воспроизведение существующего сайта в друпал используя свою тему

Делим сайт на составные части:

Начну с простого - тупо повторю внешний вид.

Для этого нужно попытаться понять на какие блоки-регионы нужно бить сайт:

Разбиение сайта на составные части

Получились следующие куски:

  1. Header - заголовок сайта
  2. Breadcrumbs - хлебные крошки - показывает на каком свете находится посетитель. Теоретически относится к header'у
  3. Main menu - главное меню сайта
  4. Page title - заголовок страницы. Можно выделить в отдельный блока, хотя по сути это всё-таки часть контента
  5. Content - содержимое сайта
  6. 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.

На это считаю поверхностное ознакомление законченным - нужно брать более жизненный пример и тупо его делать.

Всем спасибо. Все свободны. Если есть вопросы и/или предложения - заполняем форму обратной связи.

 

 

 

 

RSSAdd to Google

Обсуждение:

  • Автор: (Анонимус)
  • Пока это первая инфа по этой теме, которую я нарыла в гугле. Никто не хочет делиться секретом создания темы для drupal. Спасибо.

  • Отправлено:
  • Автор: (Анонимус)
  • Тема: Спасибо
  • Спасибо. Действительно помогла статья.

  • Отправлено:

Как вам материальчик? *



















Тема:

Мысль:

Как звать-то:

Почта:

PS: Комментарии публикуются только после проверки модератором.

PPS: E-mail'ы не публикуются.

* обязательные поля