2012-02-20 35 views
4

如何从特定的nid打印传情?这让我疯狂。从nid打印节点传情

我尝试这样做:

$teaser = TRUE; 
$page = FALSE; 
$nid = 20; 
print node_view(node_load(array('nid' => $nid)), $teaser, $page, FALSE); 

但唯一的输出是 '数组'。

我也试过这样:

$node = node_load(20); 
$teaser_content = $node->body['und']['0']['summary']; 
print $teaser_content; 

但这只是给我的节点,而不是与<!--break-->指定传情摘要

回答

8

在Drupal 7的没有$teaser参数给node_view()功能,而不是有一个$view_mode参数,它需要一个字符串(通常teaserfull,默认是full)。你目前使用的代码对于Drupal 6来说是完美的。

这段代码为Drupal 7工作:

$view_mode = 'teaser'; 
$nid = 20; 

$node = node_load($nid); 

print render(node_view($node, $view_mode)); 
+1

谢谢,你救了我的一天:)! – jroeleveld 2012-02-20 12:10:53

+0

只是一件事:有没有办法打印它'干净',所以你没有所有的包装div div等node.tpl.php?我想在宣传片的最后一个单词之后添加一个省略号,但是现在将其打印在一个新段落中。 – jroeleveld 2012-02-20 12:40:03

+0

这有点复杂,但基本上你会传递一个自定义的'$ view_mode'到'node_view()',然后检查'node.tpl.php'文件中的'$ view_mode',如果视图模式不包含某些包装是你的习惯,例如'if($ view_mode!='custom_view'){'。 – Clive 2012-02-20 12:49:41

1

使用render()函数。

$teaser = TRUE; 
$page = FALSE; 
$nid = 20; 
print render(node_view(node_load(array('nid' => $nid)), $teaser, $page, FALSE)); 

要小心使用,直接在node_view()作为node_load()如果node_load()未能成功加载节点,它会whitescreen。

+0

出于某种原因,这只能产生 '更多' 链接... – jroeleveld 2012-02-20 09:34:59

+0

是否启用了显示预告片? – 2012-02-20 09:35:45

+0

是的,我已经启用它。 – jroeleveld 2012-02-20 09:41:50

0

在Drupal的6这只是

$node = node_load(20); 
print node_view($node, 'teaser');