2014-10-30 5 views
1

사용자 정의 컨텐츠 유형 "show"의 노드를 생성하는 일부 레거시 코드에서 문제를 해결하려고하지만 동일한 유형의 동일한 제목을 가진 노드가 이미 존재하지 않는 경우에만 문제를 해결하려고합니다. 코드는 다음과 같이 보입니다 :Drupal 6 - 노드를 저장할 때 node_submit()이 필요합니까?

 $program = node_load(array('title' => $xml_node->program_title, 'type' => 'show')); 
     if (!$program) { 
      $program = new stdClass(); 
      $program->type = 'show'; 
... 
      node_submit($program); 
      node_save($program); 
     } 

그래서 스크립트는 먼저 특정 제목의 'show'콘텐츠 유형으로 노드를로드하려고 시도하고 실패하면 생성합니다.

문제는 짧은 시간 안에 여러 번 호출되면 (루프 내부에서) 이중 노드가 생성된다는 것입니다. 같은 제목으로 2 번 쇼를 만들었습니까?

거기에 무슨 문제가있을 수 있습니까?

Drupal 6에서 노드를 저장하는 방법에 대한 예제를 찾고있었습니다. 일부에서는 node_submit()도 호출하지 않았습니다. 전화가 필요한거야? 그렇다면 node_submit()이 반환 한 것을 node_save()에 전달해야할까요? 아니면 node_load()가 어떤 이유로 기존 노드를로드하지 못했을까요? 어쩌면 일부 캐시를 정리해야합니까?

+0

참조 http://drupal.stackexchange.com/questions/83277/what-is-the-purpose-of-using-node-submit-before-node-save – nawfal

답변

1

내가 아는 한 node_save를 사용하여 프로그래밍 방식으로 노드를 만들면 node_submit() 함수가 필요하지 않습니다. 두 노드가 작성되는 이유는 node_load() 함수가 node_load() 캐시에 대한 업데이트를 완료하기 전에 시작 되었기 때문입니다. 다음을 추가하십시오 :

node_load(FALSE, NULL, TRUE); 

node_save ($ program) 다음에 추가하십시오. 그러면 node_load() 캐시가 지워집니다.

참조 : https://api.drupal.org/comment/12084#comment-12084

+0

HTTP : //drupal.stackexchange.com/questions/83277/what-is-the-purpose-of-using-node-submit-before-node-save – nawfal