Для создания своих областей сайта в 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
print $header2;
?>
Не забыть нажать в Управление сайтом->Производительность->Очистить кэш
Теперь на странице управления блоками мы увидим новые области и сможем добавлять туда блоки
Комментарии
еще на drupal.org рекомендуют писать конструкцию вида
<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
в файле .инфо вместо стандартного вида присутствует вот это:
name = Contented7
description = Tableless, multi-column, fluid width theme.
version = VERSION
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»
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
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"
Никто не мешает сделать вот так.
<?php if ($search_box): ?><div class="block block-theme"><?php print $search_box ?></div><?php endif; ?>
<strong><?php print $reklama3; ?></strong><?php print $left ?>
Ну и так далее.
Смотрим выше. Регион Reklama3 после формы поиска по сайту, но выше левых блоков.Файл custom.css создаем сами, пишем туда все свои дополнения. И при следующем обновлении этой темы, вам не нужно будт вспоминать, что и как вы делали.
Ееее, у меня получилось!
Супер, можно понаделать регионов кучу
Большое спасибо!
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[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 название региона)
удачи!!
Спасибо коротко и ясно.
помогите пожалуйста, все прописал
область создалась, но как то криво [URL=http://www.radikal.ru][IMG]http://i024.radikal.ru/1101/8f/48d9d427c6dd.j...
Вам хотя бы где-то надо указать где ваш регион размещать. Обтекания, отступы... В общем стили...
Или написать название используемого шаблона и куда вы хотите разместить регион. Возможно кто-о уже делал подобное и вам подскажут готовое решение для вашего шаблона.
Область мне нужна для меню в файле 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[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.
Таблицы еще проще.
Кто вам мешает в строку выставить регионы?
<tr>
<td>I регион</td>
<td>II регион</td>
<td>III регион</td>
</tr>
...
<table>
Где тут PHP? В чистом виде работа с каскадными таблицами стилей(CSS) и с языком гипертекстовой разметки(HTML).
таблицы рулят =))) очень удобно и самое главное всё панятно ))
Тоже апну тему) Так как не понимаю,помогите,пожалуйста)
1)Создал в файле инфо регион.
2)Прописал в page.tpl
<?php if ($stat): ?>
<?php endif; ?>
3) Новая область отобразилась.
В самом низу.
Вопрос-как задать теперь ее позицию,например,я хочу чтобы она была в правом углу.
Где надо прописывать эту позицию?
Тема nixer.
Только знакомлюсь с Drupal. Спасибо,заранее)
Ознакомьтесь с CSS и основами вёрстки. И не надо говорить, что в жумло всё по другому