установка дополнительного региона для блока

Главные вкладки

Аватар пользователя poe poe 15 февраля 2007 в 3:25

Почему-то не удается установить доп.регион для блока, помимо дефолтных левого, правого, шапки, пола и контента.
Следую инструкциям:
В template.php добавляю:
function yourtheme_regions()
{ return array(
'left' => t('left sidebar'),
'right' => t('right sidebar'),
'content_top' => t('content top'),
'content' => t('content'),
'header' => t('header'),
'footer' => t('footer'),
);
}

В page.tpl.php вставляю:
<?php if ($content_top) : ?>

<?php print $content_top ?>

<?php endif; ?>

Однако в разделе администрирования блоков новый почему-то не появляется. В чем может быть причина? Версия у меня 4.7.

Комментарии

Аватар пользователя Natalie Natalie 15 февраля 2007 в 4:16

а тему поменяли на свою - вместо yourtheme_regions?
---
---
All content management systems suck, Drupal just happens to suck less. -- Boris Mann at DrupalCON Amsterdam, August 2005.

Аватар пользователя webdev webdev 15 февраля 2007 в 15:40

>> а тему поменяли на свою - вместо yourtheme_regions?

оказывается и так можно.... я все время добавляю регионы в phptemplate_regions() и пока что баг был только один раз очень давно - регион не менялся... и то, решился просьбой "работай, уважаемый" в матерной форме...

ЗЫ: чувствую я что все возможности друпала мне в этой жизни не узнать ))))

Аватар пользователя Toologic Toologic 16 февраля 2007 в 18:42

Делаем так....

В файле template.php своей темы определяем дополнительные регионы:

<?php
function Moyathema_regions() {
  return array(
// не забываем стандартные
       'left' => t('left sidebar'),
       'right' => t('right sidebar'),
       'content' => t('content'),
       'header' => t('header'),
       'footer' => t('footer'),
//Добавляем свои
       'user1'   => t('user1 bar'),
           'user2'   => t('user2 bar'),
           'user3'   => t('user3 bar'),
           'user4'   => t('user4 bar'),
           'user5'   => t('user5 bar'),
           'user6'   => t('user6 bar'),
           'user7'   => t('user7 bar'),
           'user8'   => t('user8 bar'),
           'user9'   => t('user9 bar'),
           'user10'   => t('user10 bar')

  );
}
?>

Соотвественно надо эти переменные определить еще и...

 
<?php
function _phptemplate_variables($hook, $variables) {
  if ($hook == 'page') {
// Только свои, стандартные уже определены
    foreach (array('user1','user2','user3','user4','user5','user6','user7','user8','user9','user10') as $region) {
          $variables[$region] = theme('blocks', $region);
    }
  }
  return $variables;
}
?>

В page.tpl.php вызываем регионы там где нужно:

// пробиваем на всякий случай - существует ли переменная, и уж затем значима ли она!?
<?php if((isset($user4)) and ($user4 !="")) : ?>
 <td class="my_class">
 <?php echo $user4; ?> // или <?php print $user4; ?>
 </td>
<?php endif; ?>

Где-то так...

Сам-то я начинал с того, что phptemplate.engine правил....

Мой сайт
-на drupal 4.7 - www.travelweekly.ru
-на drupal 5 - пока не готов.

Аватар пользователя webdev webdev 20 февраля 2007 в 4:30

спасибо за подсказку. сам бы в подобном направлении не копнул, т.к. правка phptemplate.engine вполне устраивает. теперь задумаюсь