Проблема с хуком темизации

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

Аватар пользователя vic vic 4 июля 2009 в 11:25

Создал новый хук темизации node_block для отображения последних нод в боковой панели. В файле template.tpl свойе темы vic зарегистрирован новый хук

<?php
function vic_theme() {
  return array(
    
'node_block' => array(
      
'arguments' => array('node' => NULL),
      
'template' => 'node_block',
    ),
  );
}
?>

Создал в папке своей темы новый фаил node_block.tpl.php и прописал там шаблон отображения ноды в боковой панели. И вот какая проблемма возникла - не могу в шаблоне оперировать объектом ноды $node, как будто объект туда не передается.
Боковая панель у меня такая
<?phpprint theme('node_block', node_load($links->nid));?>

Подскажите, пожалуйста, что я делаю не правильно? Куда пропал объект ноды $node?

Комментарии

Аватар пользователя zhylik zhylik 4 июля 2009 в 17:08

Попробовал на гарланде. Давайте по шагам:

1. В template.php у гарланда в конец пишу:

function garland_theme(){
  return array(
    'node_block' => array(
      'arguments' => array('node' => NULL),
      'template' => 'node_block',
    ),
  );
}

2. В папке с темой создаю файл node_block.tpl.php:

<?php print_r($node);?> testtesttest

3. В page.tpl.php добавляю такой код (после breadcrumb-a):

...
<?php print $breadcrumb; ?>
<?php print theme('node_block', node_load(1));?>
...

4. Захожу на страничку "admin/build/modules", жму там F5, дабы тема зарегистрировалась. Это надо делать каждый раз после того как вы внесли любые изменения в hook_theme().

5. Уже на странице с модулями получаю вверху распечатанный объект первой ноды и "testtesttest".

6. Если в ф-ии theme('node_block', node_load(15684)) передать NID несуществующей ноды, то распечатано будет только "testtesttest", т.о. надо проверить что находится у вас в $links->nid.

7. Ну и думаю "template.tpl" у вас просто описка?

Аватар пользователя vic vic 4 июля 2009 в 18:35

Заработало! Сделал все сначала. Только что было до этого не так - НЕ ПОЙМУ!
zhylik, спасибо за разбор полетов!