2012-02-20 51 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');