我想要在一个块中输出一个节点,因为该节点可以包含我不想指定字段的不同类型的字段。
有人可以解释一下如何做到这一点吗?
我尝试了这个,但我只是得到一长串的通知而没有任何输出。
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*
答案 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']来使用所需节点的所有属性。