Drupal自定义模块|如何输出块中节点的所有字段

时间:2012-01-29 12:30:16

标签: drupal module drupal-modules

我想要在一个块中输出一个节点,因为该节点可以包含我不想指定字段的不同类型的字段。

有人可以解释一下如何做到这一点吗?

我尝试了这个,但我只是得到一长串的通知而没有任何输出。

    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 个答案:

答案 0 :(得分:1)

当我使用hook节点时,我得到了一个结果。 我在发布这个问题之前已经测试了钩子节点,但是,我不知道为什么它不起作用。

不知道这种方式是否是最好/最简单的方法,但我有输出所以我很高兴!

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;
}

非常感谢!

答案 1 :(得分:0)

你有两个问题:

1)node_view()返回一个需要使用drupal_render()

呈现的数组

2)您不需要在此内容上使用主题('block')。

如果您想将节点的对象传递到tepmlate_preprocess_block和匹配的theme文件,则可以使用此

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

然后,您可以通过访问$ block ['#node']来使用所需节点的所有属性。