Создание дополнительных регионов (region, областей сайта) в Drupal 6.0
Прислано: Rel
пт, 07/03/2008 - 12:22
Для создания своих областей сайта в D6 необходимо прописать в файл {teme}.info темы такие строчки:
regions[left] = Left sidebar
regions[right] = Right sidebar
regions[content] = Content
regions[header] = Header
regions[footer] = Footer
regions[header2] = Header2
regions[header3] = Header3
left,right,content,header,footer уже есть по умолчанию .. header2, header3 - новые области
После этого определить их нахождение в page.tpl.php
<?php
print $header2;
?>Не забыть нажать в Управление сайтом->Производительность->Очистить кэш
Теперь на странице управления блоками мы увидим новые области и сможем добавлять туда блоки

- Rel's blog
- Для комментирования войдите или зарегистрируйтесь
еще на drupal.org рекомендуют писать конструкцию вида
<?php if ($region): ?> <div id="region"> <?php print $region; ?> </div> <?php endif; ?>
- Для комментирования войдите или зарегистрируйтесь
согласен, но это уже относится больше к вёрстке и знании будет ли этот регион когда-нибудь пустой.
например на сайте с которого я привёл пример (nepsite.com) если регион пустой, то меняется не только видимость самого блока, но и ширина его дива-родителя
- Для комментирования войдите или зарегистрируйтесь
А такой подход можно использовать только в Drupal 6 или в 5 тоже можно?
- Для комментирования войдите или зарегистрируйтесь
в 5-ке функцией шаблона
- Для комментирования войдите или зарегистрируйтесь
Странно, но после выполненной инструкции (обеими способами), регионы не отображаются на странице блоков. В чем дело?
- Для комментирования войдите или зарегистрируйтесь
как разместить регион\регионы именно там, где я хочу? править css?
- Для комментирования войдите или зарегистрируйтесь
ладно, более конкретный вопрос: как два региона поставить не в столбик, а в строчку, причем с различной шириной для каждого региона?
- Для комментирования войдите или зарегистрируйтесь
хех, разобрался (сам не поможешь - никто не поможет :) )
новый вопрос (видать снова только себе задаю :) )
допустим, есть два региона. У первого из них фиксированная высота, которая больше, чем высота второго региона, от чего у второго идет выравнивание по нижниему краю первого, т.е. примерно так:
_____________________
I............I......................I
I.....2.....I......................I
I............I......................I
3333333I........1............I
3333333I......................I
3333333I......................I
_______I_____________I
в результате чего образуется пустота (цифра 3) и мне в эту пустоту требуется добавить еще один регион, но у меня лишь добавлятся ниже первого региона (как самого высокого)
- Для комментирования войдите или зарегистрируйтесь
И в догонку...
использую тему contented7 для друпал 6
в файле .инфо вместо стандартного вида присутствует вот это:
; $Id: contented7.info,v 1.1 2008/04/11 02:30:59 hswong3i Exp $ name = Contented7 description = Tableless, multi-column, fluid width theme. version = VERSION !REG3XP1!>core = 6.x engine = phptemplate stylesheets[all][] = style.css stylesheets[all][] = custom.css ; Information added by drupal.org packaging script on 2008-06-19 version = "6.x-2.12" core = "6.x" project = "contented7" datestamp = "1213867807"
во-первых, мне интересно где тогда для этой темы прописаны регионы и что за файл custom.css, которого нет в папке с темой?
во-вторых, когда я добавляю свой регион (по принципу, описаному выше), то у меня один мой регион заменяет все регионы темы, в том время как при аналогичных действиях в других темах, мой регион добавляется без всяких проблем, ну, кроме тех, о которых я писал уже :)
- Для комментирования войдите или зарегистрируйтесь
хех, разобрался (сам не поможешь - никто не поможет :) )
тогда "вопрос на засыпку": как все-же регионы разместить в строку?
спасибо за ответ :)
UPD: все, теперь и я разобрался :) расместил в строку с помощью «table» :)
- Для комментирования войдите или зарегистрируйтесь
во-первых, мне интересно где тогда для этой темы прописаны регионы и что за файл custom.css, которого нет в папке с темой?
; $Id: contented7.info,v 1.1 2008/04/11 02:30:59 hswong3i Exp $ name = Contented7 description = Tableless, multi-column, fluid width theme. regions[header] = Header regions[reklama3] = Reklama 3 regions[left] = Left sidebar regions[reklama1] = Reklama 1 regions[content] = Content regions[reklama2] = Reklama 2 regions[right] = Right sidebar regions[reklama4] = Reklama 4 regions[footer] = Footer version = VERSION !REG3XP1!>core = 6.x engine = phptemplate stylesheets[all][] = style.css stylesheets[all][] = custom.css ; Information added by drupal.org packaging script on 2009-05-14 version = "6.x-2.15" core = "6.x" project = "contented7" datestamp = "1242291918"
Никто не мешает сделать вот так.
div id="sidebar-left" class="sidebar"><!-- begin sidebar-left -->
<?php if ($search_box): ?><div class="block block-theme"><?php print $search_box ?></div><?php endif; ?>
<strong><?php print $reklama3; ?></strong><?php print $left ?>Ну и так далее.
Файл custom.css создаем сами, пишем туда все свои дополнения. И при следующем обновлении этой темы, вам не нужно будт вспоминать, что и как вы делали.
во-вторых, когда я добавляю свой регион (по принципу, описаному выше), то у меня один мой регион заменяет все регионы темы, в том время как при аналогичных действиях в других темах, мой регион добавляется без всяких проблем, ну, кроме тех, о которых я писал уже :)
Смотрим выше. Регион Reklama3 после формы поиска по сайту, но выше левых блоков.
- Для комментирования войдите или зарегистрируйтесь
Ееее, у меня получилось!
Супер, можно понаделать регионов кучу :)
Большое спасибо!
- Для комментирования войдите или зарегистрируйтесь
regions[header] = Header regions[reklama3] = Reklama 3 regions[left] = Left sidebar regions[reklama1] = Reklama 1 regions[content] = Content regions[reklama2] = Reklama 2 regions[right] = Right sidebar regions[reklama4] = Reklama 4 regions[footer] = Footer
Ну вдогонку. Я не случайно разместил в такой последовательности регионы.
Порядок размещания здесь отвечает за местонахождение регионов во вкладке БЛОКИ.
Про тот самый файл
stylesheets[all][] = custom.cssНазвание custom - это конечно произвольное, естественно пойдет любое.
В содержимом у меня описания для рекламных блоков.
К примеру справа
regions[reklama2] = Reklama 2 в регион разместил погодный информер, и чтоб дизайн информера и самого региона совпадал описания сделал в custom.css.Вычилсительные силы, к чему это я. В общем, про то что, любые ваши наработки сделанные для одной темы можно легко переносить в другие темы. И так же не потереть свои наработочки.
- Для комментирования войдите или зарегистрируйтесь
Коммент удаляю
- Для комментирования войдите или зарегистрируйтесь
А почему если я в Create page напишу
<?php
print $header;
?>то у меня ничего не выводится, хочу вывести в теле материала заголовок.
- Для комментирования войдите или зарегистрируйтесь
Потому что он и не будет выводиться, откуда ему там взяться?
- Для комментирования войдите или зарегистрируйтесь
поправил предыдущее сообщение,
но ведь в {teme}.info этот регион прописан, если в page.tpl.php работает то я думал и в теле ноды заработать должно.
- Для комментирования войдите или зарегистрируйтесь
Совершенно не должен, темизация просходит в конце
- Для комментирования войдите или зарегистрируйтесь
добавил в .info
регион:
regions[left] = Left sidebar regions[right] = Right sidebar regions[content] = Content regions[header] = Header regions[footer] = Footer regions[mymymy] = мой
и в файл темы page.tpl.php
<?php print $mymymy; ?>
1) в блоках он отображается admin/build/block (причем просто подсвечивается цветом)
2) создал в папке своей темы файлик block-mymymy.tpl.php
в файл вставлял любой текст
3) на всякий случай скопировал в папку с темой block.tpl.php
4) чистил кэшы, отключал тему
блок не появляется на сайте, куда копать дальше?
- Для комментирования войдите или зарегистрируйтесь
Ну а сам то блок в регион муму включили?
- Для комментирования войдите или зарегистрируйтесь
хм....нет, его только через админку включать?
- Для комментирования войдите или зарегистрируйтесь
Тогда как вы хотите увидеть пустой регион?
- Для комментирования войдите или зарегистрируйтесь
спасибо.....понял теперь, что нужно создать блок в регионе, тогда подцепляется файл block-mymymy.tpl.php, где (mymymy название региона)
удачи!!
- Для комментирования войдите или зарегистрируйтесь
Спасибо коротко и ясно.
- Для комментирования войдите или зарегистрируйтесь
помогите пожалуйста, все прописал
область создалась, но как то криво 
- Для комментирования войдите или зарегистрируйтесь
помогите пожалуйста, все прописал
<?php print $header2; ?>
область создалась, но как то криво
Про тот самый файл stylesheets[all][] = custom.css
Название custom - это конечно произвольное, естественно пойдет любое.
В содержимом у меня описания для рекламных блоков.
К примеру справа regions[reklama2] = Reklama 2 в регион разместил погодный информер, и чтоб дизайн информера и самого региона совпадал описания сделал в custom.css.
Вам хотя бы где-то надо указать где ваш регион размещать. Обтекания, отступы... В общем стили...
Или написать название используемого шаблона и куда вы хотите разместить регион. Возможно кто-о уже делал подобное и вам подскажут готовое решение для вашего шаблона.
- Для комментирования войдите или зарегистрируйтесь
Область мне нужна для меню в файле page.tpl.php я удалил
и в место вставил <?php print $header2; ?>
Создалась область, я перенес в нее Superfish 6.x-1.6 дабы сделать норм меню) Но опять кривовато http://gosha.me/ скрин админки выше (((
- Для комментирования войдите или зарегистрируйтесь
template.php
<?php
/**
* Generate regions of theme.
*/
function НазваниеТемы_regions() {
return array(
'right' => t('right sidebar'),
'content' => t('content'),
'header' => t('header'),
'footer' => t('footer'),
'content_header' => t('header of main content'),
'prefooter' => t('prefooter'),
'inline_for_node' => t('inline region for nodes')
);
}?>НазваниеТемы.info
regions[right] = right sidebar regions[content] = content regions[header] = header regions[footer] = footer regions[content_header] = header of main content regions[prefooter] = prefooter regions[inline_for_node] = inline region for nodes
Следовательно и вызываем в page.tpl.php <?php if ($prefooter) print $prefooter; ?>
<?php if($inline_for_node): print $inline_for_node; endif; ?>
'right' => t('right sidebar') - Правое меню
'left' => t('left sidebar') - Левое меню
'prefooter' => t('prefooter') - Новый регион, место перед подвалом.
- Для комментирования войдите или зарегистрируйтесь
Подниму тему. Объясните человеку незнакомому с РНР как правильно прописать регионы при помощи table чтобы они выводились в строчку?
<?php if (!$in_overlay): // hide in overlay ?>
<?php if ($page['tertiary_content']): ?>
<div id="tertiary-content">
<?php print render($page['tertiary_content']); ?>
</div>
<?php endif; ?>
<?php if ($page['tertiary2_content']): ?>
<div id="tertiary2-content">
<?php print render($page['tertiary2_content']); ?>
</div>
<?php endif; ?>
<?php if ($page['tertiary3_content']): ?>
<div id="tertiary3-content">
<?php print render($page['tertiary3_content']); ?>
</div>
<?php endif; ?>Сейчас они выводятся друг за другом вертикально, хотелось бы их разместить в горизонтальном порядке.
- Для комментирования войдите или зарегистрируйтесь
Тему засоряете. Делайте обтекание блоков - CSS/float.
Таблицы еще проще.
Кто вам мешает в строку выставить регионы?
<table> <tr> <td>I регион</td> <td>II регион</td> <td>III регион</td> </tr> ... <table>
Объясните человеку незнакомому с РНР
Где тут PHP? В чистом виде работа с каскадными таблицами стилей(CSS) и с языком гипертекстовой разметки(HTML).
- Для комментирования войдите или зарегистрируйтесь
таблицы рулят =))) очень удобно и самое главное всё панятно ))
- Для комментирования войдите или зарегистрируйтесь











Комментарии