2013-07-12 107 views
2

我創建了一個模塊來獲取服務器信息。 所以我創建了一個特定的內容類型。要收集所有的數據,一個字段是必需的主機名。Drupal 7:節點插入/節點更新的區別

我使用的功能hook_node_presave()添加信息,如CPU,內存,等我的節點。所以當我創建一個新節點時,我手動指定了名稱,並且drupal調用了函數hook_node_presave(),該函數自動將其他信息插入到我的節點中。

我還設置好的一個cron到每個節點的信息定期更新。爲此,我使用hook_cron()。我管理的每個節點由於負荷node_load(),對其進行更新,但是當我想用node_save() Drupal的調用邏輯hook_node_presave()救他們......但不要讓這種情況發生:因爲此功能更新一次的信息!

我怎樣才能differenciate 新節點hook_node_presave()升級的節點? Otherwhise我可以調用哪個函數來避免這個問題?

感謝您的幫助

回答

2

只需選中is_new部件上的節點對象或爲nid存在:

function MYMODULE_node_presave($node) { 
    if ($node->is_new) { 
    // ... 
    } 

    // Equivalent to 
    if (empty($node->nid)) { 
    // ... 
    } 
} 

user_save()文檔:

參數

$ node:要保存的$ node對象。如果省略$ node-> nid(或$ node-> is_new爲TRUE),則會添加新節點。