Пользовательский модуль Drupal |Как вывести все поля узла в блоке - PullRequest
0 голосов
/ 29 января 2012

У меня есть узел, который я хочу вывести в блоке, потому что узел может содержать поля различного типа, которые я не хочу указывать в полях.

Может кто-нибудь объяснить мне, как это можно сделать?

Я попробовал это, но я просто получил длинный список уведомлений без вывода.

    function mymodule_block_view($delta = '') {
    $node = node_load(6);
    $node_content = node_view($node);

    switch($delta){
        case 'mymodule':
        $block['subject'] = t('title');   
        $block['content'] = theme('block', $node_content);  
    }
    return $block;
} 

Заранее спасибо! Результат: Нет содержимого и список уведомлений:

*Notice: Undefined index: #block in template_preprocess_block() (line 937 of /home/user/public_html/drupal/modules/block/block.module).
Notice: Trying to get property of non-object in template_preprocess_block() (line 939 of /home/user/public_html/drupal/modules/block/block.module).
Notice: Trying to get property of non-object in template_preprocess_block() (line 940 of /home/user/public_html/drupal/modules/block/block.module).
Notice: Trying to get property of non-object in template_preprocess_block() (line 943 of*

Ответы [ 2 ]

1 голос
/ 30 января 2012

У меня есть результат, когда я использую крючковый узел.Я уже проверил узел перехвата, прежде чем опубликовать этот вопрос, но да, я не знаю, почему он тогда не работал.

Не знаю, является ли этот способ лучшим / простым, но яполучил вывод, так что я рад!

function mymodule_block_view($delta = '') {

    switch($delta){
        case 'mymodule':            
               $node_content = node_view(node_load(6));
               $content = theme('node', $node_content);

               $block = array(
                 'subject' => t('My Module'),
                 'content' => $content);
    }
    return $block;
}

Спасибо в любом случае!

0 голосов
/ 29 января 2012

У вас есть две проблемы:

1) node_view () возвращает массив, который необходимо отобразить с помощью drupal_render ()

2) Вам не нужно использовать тему («блок») для этого контента.

Если вы хотите передать объект узла в tepmlate_preprocess_block и в соответствующий файл theme, вы можете использовать этот

case 'mymodule':
  $block['subject'] = t('title');   
  $block['#node'] = $node;
  $block['content'] = '';

Затем вы можете использовать любой атрибут узла, который вам нужен в вашем файле тем, путем доступа к $ block ['# node'].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...