Автор: Hash,
http://hash.naikonsoft.com/
Продолжая тему создания темы Друпала, хочется направить вас на разбиение
страницы на логические составляющие. Что это такое? Это отдельные участки
страницы которые в целом составляют ваш веб сайт. Блоки, комментарии, контент,
все это относится к логическим составляющим. И все это очень просто разбивается
на пару-тройку файлов в вашей теме. Для блоков есть файл block.tpl.php,
для комментариев есть отдельный файл comment.tpl.php.
Здесь и далее я предполагаю что каждый элемент блоков, контента, комментариев
полностью идентичен по виду с другими своими сотоварищами. Хотя и не отрицаю то
что они могут быть немного отличны от других (иметь разный дизайн и прочее).
Блоки могут располагаться как слева страницы, так и справа и по центру,
других вариантов увы не дано. Хотяяя, в одном из своих проектов я расположил
один блок, имеется ввиду блок с формой входа и навигацией в popup окошко,
которое выпадало когда нажимали пункт меню Login на странице. Так что все не так
уж и плохо.
Итак вы уже определили как на вашем дизайне выглядят блоки и настала пора
внедрить это в вашу тему. Если помните
прошлый раз мы оставили страницу в ее первоначальном виде после верстки. Так
сказать с рыбой. Меню не действует, блоки не отображают необходимую информацию,
а контент вообще как и все остальное не динамичен.
Поправим ситуацию с блоками. Для этого открываем файл block.tpl.php и
переносим контент с page.tpl.php страницы который отвечает всего за один
блок в него. Остальные блоки просто зачищаем, а на их место вставляем такой код
<?=$sidebar_right;?> (если блоки находились справа) или <?=$sidebar_left?> (если
блоки находились слева). Либо вам придется использовать и то и другое. Все
зависит от страницы.
Что было?
-
<div class="nodes_right">
-
-
<!-- first block -->
-
-
<div class="right_block">
-
<div class="content_node_title">
-
<div class="cnd_left"></div>
-
<div class="cnd_center">Lorem
ipsum dolor sit amet, consectetuer adipiscing elit.</div>
-
<div class="cnd_right"></div>
-
</div>
-
<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>
-
</div>
-
-
<!-- second block -->
-
-
<div class="right_block">
-
<div class="content_node_title">
-
<div class="cnd_left"></div>
-
<div class="cnd_center">Друзья</div>
-
<div class="cnd_right"></div>
-
</div>
-
<div class="node_content">Сиротаааа</div>
-
</div>
-
-
<!-- third block -->
-
-
<div class="right_block">
-
<div class="content_node_title">
-
<div class="cnd_left"></div>
-
<div class="cnd_center">События</div>
-
<div class="cnd_right"></div>
-
</div>
-
<div class="node_content">31.12.07
Человечество празднует наступление Нового Года</div>
-
</div>
-
-
</div>
Что стало?
В page.tpl.php
-
<div class="nodes_right"><?=$sidebar_right?></div>
В block.tpl.php
-
<!-- third block -->
-
-
<div class="right_block">
-
<div class="content_node_title">
-
<div class="cnd_left"></div>
-
<div class="cnd_center">События</div>
-
<div class="cnd_right"></div>
-
</div>
-
<div class="node_content">31.12.07
Человечество празднует наступление Нового Года</div>
-
</div>
Не факт что вы увидите хоть какие нибудь блоки, с таким содержимым. Все может
быть из-за того что в друпале блоки по умолчанию все на левой части и возможно
вам придется через панель администрирования переделать их на правые при первой
же необходимости.
То, что сейчас в блоке опять же не скажешь, что это именно то, что нам нужно.
Блоки до сих пор содержат рыбу. А все из за того что прописано жестко все.
Отредактируем блок к такому виду
-
<div class="right_block">
-
<div class="content_node_title">
-
<div class="cnd_left"></div>
-
<div class="cnd_center"><?=$block->subject?></div>
-
<div class="cnd_right"></div>
-
</div>
-
<div class="node_content"><?php
print $block->content ?></div>
-
</div>
Вот теперь все как положено, возможно дальше вам придется повозиться со
стилями, что-то поправить, а что бывает без ухабов? В любом случае мы все таки
заставили наши блоки отображать соответствующий контент, который им назначен
модулями и административной панелью.
Осталось сказать о переменной $block. Это обычный объект, который содержит
всю необходимую информацию по блокам. Часто вполне достаточно двух полей из
этого объекта.
Всем респект.
|