Создание темы для Drupal. Часть 2

Автор: Hash, http://hash.naikonsoft.com/

Продолжая тему создания темы Друпала, хочется направить вас на разбиение страницы на логические составляющие. Что это такое? Это отдельные участки страницы которые в целом составляют ваш веб сайт. Блоки, комментарии, контент, все это относится к логическим составляющим. И все это очень просто разбивается на пару-тройку файлов в вашей теме. Для блоков есть файл block.tpl.php, для комментариев есть отдельный файл comment.tpl.php.

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

Блоки могут располагаться как слева страницы, так и справа и по центру, других вариантов увы не дано. Хотяяя, в одном из своих проектов я расположил один блок, имеется ввиду блок с формой входа и навигацией в popup окошко, которое выпадало когда нажимали пункт меню Login на странице. Так что все не так уж и плохо.

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

Поправим ситуацию с блоками. Для этого открываем файл block.tpl.php и переносим контент с page.tpl.php страницы который отвечает всего за один блок в него. Остальные блоки просто зачищаем, а на их место вставляем такой код <?=$sidebar_right;?> (если блоки находились справа) или <?=$sidebar_left?> (если блоки находились слева). Либо вам придется использовать и то и другое. Все зависит от страницы.

Что было?

  1. <div class="nodes_right">
  2.  
  3. <!-- first block -->
  4.  
  5. <div class="right_block">
  6. <div class="content_node_title">
  7. <div class="cnd_left"></div>
  8. <div class="cnd_center">Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</div>
  9. <div class="cnd_right"></div>
  10. </div>
  11. <div class="node_content">Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</div>
  12. </div>
  13.  
  14. <!-- second block -->
  15.  
  16. <div class="right_block">
  17. <div class="content_node_title">
  18. <div class="cnd_left"></div>
  19. <div class="cnd_center">Друзья</div>
  20. <div class="cnd_right"></div>
  21. </div>
  22. <div class="node_content">Сиротаааа</div>
  23. </div>
  24.  
  25. <!-- third block -->
  26.  
  27. <div class="right_block">
  28. <div class="content_node_title">
  29. <div class="cnd_left"></div>
  30. <div class="cnd_center">События</div>
  31. <div class="cnd_right"></div>
  32. </div>
  33. <div class="node_content">31.12.07 Человечество празднует наступление Нового Года</div>
  34. </div>
  35.  
  36. </div>

Что стало?

В page.tpl.php

  1. <div class="nodes_right"><?=$sidebar_right?></div>

В block.tpl.php

  1. <!-- third block -->
  2.  
  3. <div class="right_block">
  4. <div class="content_node_title">
  5. <div class="cnd_left"></div>
  6. <div class="cnd_center">События</div>
  7. <div class="cnd_right"></div>
  8. </div>
  9. <div class="node_content">31.12.07 Человечество празднует наступление Нового Года</div>
  10. </div>

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

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

  1. <div class="right_block">
  2. <div class="content_node_title">
  3. <div class="cnd_left"></div>
  4. <div class="cnd_center"><?=$block->subject?></div>
  5. <div class="cnd_right"></div>
  6. </div>
  7. <div class="node_content"><?php print $block->content ?></div>
  8. </div>

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

Осталось сказать о переменной $block. Это обычный объект, который содержит всю необходимую информацию по блокам. Часто вполне достаточно двух полей из этого объекта.

Всем респект.



Опубликовал admin
6 Ноя, Вторник 2007г.



Программирование для чайников.