Как создавать inline регионы для пятерки известно. Для Drupal 6.х это делается так - в файле template.php вашей темы добавьте следующую функцию:
Рассмотрим функцию подробней:
THEMENAME_preprocess_node - название функции, "THEMENAME" следует заменить на имя вашей темы
foreach (array('instory') as $region) {
$variables[$region] = theme('blocks', $region) - прицепить к массиву переменных ноды переменную instory
instory - имя вашего региона (можете задать другое имя)
Чтобы регион стал доступен, добавьте в файл THEMENAME.info вашей темы строку
Далее следует "напечатать" этот регион в файле node.tpl.php в нужном вам месте.
Например, чтобы регион отображался над блоком материала:
Чтобы регион отображался под блоком материала:
Дополнительно:
Рекомендуемая конструкция для вывода региона:
<?php print $instory ?> // печатаем регион instory
<?php endif; ?> // цикл завершен
Если вы хотите, чтобы регион не отображался в режиме тизера, используйте следующую конструкцию в template.php (вместо приведенной выше):
Комментарии
Клёво! Спасибо!
Я сделал: получилось.
Но, если в theme.info изначально не прописаны регионы, то при прописывании там "regions[instory] = instory", те регионы, что тема выводила ранее, аннулируются, будет ошибка на странице администрирования блоков (типа, регион такой-то определен не верно) (напрмер, с Garland так), ибо регионы там изначально стандартные и выводятся за счет phptemplate.
Что бы этого избежать, надо в theme.info вместе с новым регионом "regions[instory] = instory" прописать те, которые выводились, т. е. так:
regions[left] = Left sidebar
regions[right] = Right sidebar
regions[content] = Content
regions[instory] = instory
regions[footer] = Footer
И в том порядке, в котором они должны быть.
function phptemplate_preprocess_node(&<strong>$vars</strong>) {
Oboggy, в этой строке ошибка —
<strong></strong>
в PHP-коде откуда-то появились. Исправьте, пожалуйста.PS: Спасибо огромное за статью - информация очень пригодилась!
как следует прописать в node.tpl.php, чтобы регион отображался внутри блока материала?
tnx
Спасибо, большое, очень помогло.
Большое спасибо!
Очень пригодилось.
Вроде бы все делал как написано. В Блоках появился новый регион. Перенес из подвала нужные блоки и они просто ИСЧЕЗЛИ. То есть регион сам не отображается (и в Блоках желтой метки с надписью региона тоже нет). Название instory сохранял, THEMENAME менял на свое. В THEMENAME.info добавлял строчку regions[instory] = instory. В tamplate.php пробовал выводить и через print и echo. Даже не знаю в чем может быть еще проблема =(? Может я не туда вставил php код в tamplate.php?
Надо еще прописывать, помимо themename.info, в page.tpl.php, а в tamplate.php необязательно, если только нет каких-то особых требований к выводу контента в новом регионе и т. п.