2012-02-20 10 views
4

Comment puis-je imprimer un teaser à partir d'un nid spécifique? Ça me rend fou.Teaser de noeud d'impression de nid

J'ai essayé ceci:

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

mais la seule sortie est 'Array'.

J'ai aussi essayé ceci:

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

Mais ce n'est de me donner l'résumé du nœud, pas le teaser spécifié avec <!--break-->.

Répondre

8

Dans Drupal 7 il n'y a pas d'argument à la fonction $teasernode_view(), à la place il y a un argument $view_mode qui prend une chaîne (généralement teaser ou full, la valeur par défaut est full). Le code que vous utilisez actuellement fonctionnerait parfaitement pour Drupal 6.

Ce code fonctionnera pour Drupal 7:

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

$node = node_load($nid); 

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

Merci, vous avez sauvé ma journée :)! – jroeleveld

+0

Juste une chose: y a-t-il un moyen de l'imprimer 'clean' donc vous n'avez pas tous les divs wrapper etc. de node.tpl.php? Je voudrais ajouter une ellipse après le dernier mot du teaser mais maintenant il est imprimé dans un nouveau paragraphe. – jroeleveld

+0

C'est un peu plus compliqué, mais essentiellement vous passeriez un custom '$ view_mode' à' node_view() 'et ensuite vérifiez' $ view_mode' dans le fichier 'node.tpl.php' pour ne pas inclure certains wrappers si le mode d'affichage est votre coutume, par exemple 'if ($ view_mode! = 'custom_view') {'. – Clive

1

Utilisez la fonction render().

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

Soyez prudent en utilisant node_view() directement sur node_load() comme il va whitescreen si node_load() ne parvient pas à charger avec succès le nœud.

+0

Pour une raison quelconque cela ne produit que un lien 'Lire la suite' ... – jroeleveld

+0

Avez-vous activé la afficher pour le teaser? –

+0

Oui, je l'ai activé. – jroeleveld

0

Dans Drupal 6, il est juste

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