我有一個包含大量計算字段的Drupal內容類型。一些(但不是全部)項目正通過cron觸發的RSS源導入器添加到此內容類型中。我試圖爲hook_cron中的新項目觸發計算字段生成。以下代碼抓取所有未標記爲「已提交」的項目,加載並重新保存該節點,然後將節點標記爲「已提交」。Drupal 7 node_save在cron期間不保存計算字段
$query = db_select('node', 'n');
$query->fields('n', array('nid'));
$table_alias = $query->join('field_data_field_submitted', 'r', 'n.nid = r.entity_id AND r.field_submitted_value = 0');
$result = $query->execute();
foreach ($result as $record){
$q = $record->nid;
$n = node_load($q);
node_save($n);
$query = db_update('field_data_field_submitted')
->fields(array('field_submitted_value' => 1))
->condition('entity_id', $q)
->execute();
}
此代碼我希望它,如果我把它從一個模塊生成的頁面(使用hook_menu與頁面回調函數創建)的方式。重新提交節點,並且生成計算的字段數據。當我把這段代碼放到我的hook_cron函數中時,查詢起作用,它循環遍歷記錄並更新'提交'值,但不計算計算字段。我很困惑,爲什麼這不會在cron中觸發。任何幫助?
感謝代碼提示 - 我將使用實體字段查詢向前移動。不幸的是,我仍然看到相同的行爲 - 這個代碼作爲模塊生成頁面的一部分完全工作。當包含在hook_cron中時,它會更改提交的值,但不會觸發計算字段的計算... – Zeth 2012-07-19 21:16:15
我甚至嘗試將代碼放置在模塊生成的頁面中,然後使用drupal_http_request觸發該頁面。相同的行爲 - 更新field_submitted,但不會觸發計算字段... – Zeth 2012-07-19 21:21:42