2012-09-28 2 views
0

В Drupal 7 я хочу добавить узел на другой узел, когда пользователь зарегистрирован.Добавить содержимое узла внутри другого узла в hook_node_view

Я использую Drupal 7, и я хочу, чтобы добавить узел в другой узел, когда пользователь вошел в систему:

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, 
      ); 
     } 
    } 
} 

Я получаю следующее сообщение об ошибке:

Fatal error: Cannot use object of type stdClass as array 

I я использую следующую форму:

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

Каков правильный способ сделать это в моем модуле?

ответ

0

Вам просто нужно сделать одно небольшое изменение, насколько я могу сказать:

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

Как может включать в себя только простой текстовый контент узел? – Joseph

+0

Вы имеете в виду область тела? Что-то вроде: '$ items = field_get_items ('node', $ node, 'body'); $ body_item = array_shift ($ items); $ body_text = $ body_item ['safe_value']; ' – Clive

Смежные вопросы