나는 여러 개의 계산 된 필드를 포함하는 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
나는 모듈 생성 페이지에 코드를 배치하고 drupal_http_request로 해당 페이지를 트리거하려고했습니다. 동일한 동작 - field_submitted를 업데이트하지만 계산 된 필드를 트리거하지 않습니다 ... – Zeth