2012-09-28 2 views
0

Dans Drupal 7, je souhaite ajouter un nœud à un autre nœud lorsque l'utilisateur est connecté.Ajouter le contenu d'un nœud à un autre nœud dans hook_node_view

J'utilise Drupal 7, et je veux ajouter un noeud dans un autre nœud lorsque l'utilisateur est connecté:

function my_modul_node_view($node, $view_mode, $langcode) { 
    global $user; 
    switch ($node->vid) { 
    case 4: 
     $node2 = node_load(37); 
     if ($user->uid > 0) { 
      $node->content['my_data_field'] = array(
       '#markup' => drupal_render($node2), 
       '#weight' => 10, 
      ); 
     } 
    } 
} 

Je reçois le message d'erreur suivant:

Fatal error: Cannot use object of type stdClass as array 

I utilise le formulaire suivant:

$form = drupal_get_form('user_login', $node); 
    $node->content['data_collection_form'] = array(
     '#markup' => drupal_render($form), 
     '#weight' => 10, 
    ); 

Quelle est la bonne façon de faire cela dans mon module?

Répondre

0

Vous avez juste besoin de faire un petit changement pour autant que je peux dire:

$node->content['my_data_field'] = array(
    '#markup' => drupal_render(node_view($node)), 
    '#weight' => 10, 
); 
+0

Comment inclure uniquement le contenu de texte brut de noeud? – Joseph

+0

Voulez-vous dire le corps du corps? Quelque chose comme: '$ items = field_get_items ('node', $ node, 'body'); $ body_item = array_shift ($ articles); $ body_text = $ body_item ['safe_value']; ' – Clive

Questions connexes