2013-07-09 27 views
0

我有Drupal 7的一個問題,我有一個名爲 「服務器」 的內容類型,至極包含不同的領域:Drupal的:修改節點 - hook_node_insert/hook_node_insert

  • 主機名
  • CPU速度
  • 。 ..

字段主機名是手動輸入的。其他字段必須以主動方式輸入。 所以我指定了一個主機名,一個函數必須搜索信息(CPU速度,...)並填充空字段。

但我沒有設法更新我的節點。我嘗試了功能hook_node_inserthook_node_insert。當我在(1)之前和之後(2)使用這些函數打印節點時,我可以看到差異。但是當我訪問節點http://localhost/drupal/?q=node/32修改已經消失。

這裏是我的一部分功能:

function module_node_presave($node) { 
    if ($node->type == 'server') { 

     dpm($node); //(1) 
     $node->field_server_cpu_speed[LANGUAGE_NONE][0]['value'] = 55; 
     dpm($node); //(2) 

    } 
} 

有人能幫助我嗎?

由於提前, BDR

回答

0

嘗試Computed field模塊來創建動態字段,或者在碼的末尾添加node_save($node);保存節點:

function module_node_presave($node) { 
    if ($node->type == 'server') { 
    $node->field_server_cpu_speed[LANGUAGE_NONE][0]['value'] = 55; 
    node_save($node); 
    } 
} 
+0

這使一個無限循環用於我錯誤:'(!)致命錯誤:達到'100'的最大函數嵌套級別,' – Mouneer

+0

這可能是真實的,因爲它是一個_presave()鉤子。你可以在函數的末尾添加''''drupal_exit();'''。 – TheodorosPloumis