我有一个 Drupal 内容类型,其中包含许多计算字段。一些(但不是全部)项目正在通过 cron 触发的 RSS 提要导入器添加到此内容类型。我正在尝试为 hook_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 中触发。有什么帮助吗?