drupal 4.7의 맞춤 모듈에서 노드 객체를 해킹하여 node_save ($ node)에 전달하여 노드를 생성했습니다. 이 해킹은 드루팔 (Drupal 6)에서 더 이상 작동하지 않는 것으로 보입니다.이 해킹이 수정 될 수 있다고 확신하는 동안 양식없이 노드를 만드는 표준 솔루션이 있다면 궁금합니다. 이 경우 데이터는 다른 웹 사이트의 맞춤 피드에서 가져옵니다.drupal에서 cron 작업으로 노드를 만들려면 어떻게해야합니까?
답변
노드를 실용적으로 생성하기위한 표준 API에 대해 알지 못합니다. 그러나 이것은 내가하려는 일을하는 모듈을 만드는 것으로부터 수집 한 것입니다.
- 중요한 필드가 설정되어 있는지 확인 : UID는, 이름, 유형, 언어, 제목, 본문, 필터는
- 이 $ 노드에 추가 할 수
node_object_prepare()
그래서 다른 모듈을 통해 노드를 통과 (node_add()
및node_form()
참조) 목적.
이렇게하는 가장 좋은 방법은 drupal_execute를 이용하는 것입니다. drupal_execute는 표준 유효성 검증과 기본 노드 조작을 실행하여 시스템이 예상하는대로 작동하도록합니다. drupal_execute는 단순한 node_save보다는 약간 덜 직관적이지만, Drupal 6에서는 다음과 같은 방식으로 drupal_execute를 사용할 수 있습니다. 내가 발견
$form_id = 'xxxx_node_form'; // where xxxx is the node type
$form_state = array();
$form_state['values']['type'] = 'xxxx'; // same as above
$form_state['values']['title'] = 'My Node Title';
// ... repeat for all fields that you need to save
// this is required to get node form submits to work correctly
$form_state['submit_handlers'] = array('node_form_submit');
$node = new stdClass();
// I don't believe anything is required here, though
// fields did seem to be required in D5
drupal_execute($form_id, $form_state, $node);
또 하나의 대답은 드루팔 코어의 blogapi 모듈에서 the example를 사용하는 것이 었습니다. 그것이 핵심에 있다는 사실은 나에게 앞으로의 버전에서 계속 작동 할 것이라는 확신을 더 해줍니다.
위에서 좋은 답변이 있지만 가져온 피드 항목을 노드로 변환하는 구체적인 예에서는 간단한 피드 모듈 (http://wwww.drupal.org/project/simplefeed)을 사용하는 방법을 사용할 수도 있습니다. 이 모듈은 단순한 엔진을 사용하여 피드를 수집하고 각 피드의 개별 항목을 노드로 변환합니다. 나는 이것이 cron으로부터 노드를 생성하는 문제를 구체적으로 다루지는 않는다는 것을 알고 있지만, 전반적으로 문제에 대한 더 쉬운 해결책 일 수 있습니다.
문제는 단순 급지에 대해 단순한 것이없고 뭉툭하고 부 풀리는 것이 가득한 것입니다. – deadprogrammer
많은 contrib 모듈과 같은 문제가있는 것 같습니다. – Rimian
node_save()는 Drupal 6에서 여전히 정상적으로 작동합니다. 데이터를 작동 시키려면 몇 가지 특정 데이터 조각이 필요합니다.
$node = new stdClass();
$node->type = 'story';
$node->title = 'This is a title';
$node->body = 'This is the body.';
$node->teaser = 'This is the teaser.';
$node->uid = 1;
$node->status = 1;
$node->promote = 1;
node_save($node);
'상태'및 간과하기 쉬운 '홍보'- 당신이 그를 설정하지 않으면, 노드는 게시되지 않은 및 unpromoted 남아있을 것입니다, 당신은 콘텐츠 관리 화면으로 이동하는 경우에만 볼 수 있습니다 .
$ node-> revision도 설정해야한다고 생각합니다. 초기 값으로 설정하고 저장하면 노드 ID로 설정됩니다. 나는 내 마음의 뒤쪽 어딘가에서이 문제가 생기는 것을 기억하는 것 같다. – Rimian
- 1. cron 작업으로 PHP 페이지로드
- 2. Drupal에서 뷰에 표시되는 노드를 삭제하려면 어떻게해야합니까?
- 3. "편집"작업을 기본 작업으로 만들려면 어떻게해야합니까?
- 4. cron 작업으로 정기적으로 phpThumb 캐시를 지우십시오.
- 5. 응용 프로그램 시작에서 작업으로 cron 작업 시뮬레이트
- 6. Celery를 사용하여 보류중인 모든 작업으로 대시 보드를 만들려면 어떻게해야합니까?
- 7. drupal에서 노드를 편집하는 중 메시지를 표시 하시겠습니까?
- 8. drupal에서 노드를 일괄 수정하는 방법은 무엇입니까?
- 9. django "manage.py index"가 cron 작업으로 실행되지 않습니다.
- 10. 왜이 bash 스크립트는 콘솔에서 작동하지만 cron 작업으로 실행하면 실패합니까?
- 11. cPanel에서 Cron 작업으로 21 일 후에 이메일 삭제
- 12. CakePHP의 : 실행 컨트롤러 cron 작업으로 컨트롤러 액션을 실행하려고
- 13. cron 작업으로 사용할 때 쉘 스크립트 wget이 작동하지 않습니다.
- 14. Drupal에서 hierachial 페이지를 표시하려면 어떻게해야합니까?
- 15. 일반 목록에서보기를 만들려면 어떻게해야합니까?
- 16. Vertical UISlider를 만들려면 어떻게해야합니까?
- 17. Form 인스턴스를 만들려면 어떻게해야합니까?
- 18. 주문 양식을 만들려면 어떻게해야합니까?
- 19. AtlasSpriteManager에서 텍스처를 만들려면 어떻게해야합니까?
- 20. .NET에서 마법사를 만들려면 어떻게해야합니까?
- 21. Perl에서 XML을 만들려면 어떻게해야합니까?
- 22. 새 HttpContext를 만들려면 어떻게해야합니까?
- 23. 가로보기를 만들려면 어떻게해야합니까?
- 24. ObjectSet의 인스턴스를 만들려면 어떻게해야합니까?
- 25. 맞춤 이벤트를 만들려면 어떻게해야합니까?
- 26. blogger.com 템플릿을 만들려면 어떻게해야합니까?
- 27. MySQL에서 테이블을 만들려면 어떻게해야합니까?
- 28. 수영 div를 만들려면 어떻게해야합니까
- 29. HTML 팝업을 만들려면 어떻게해야합니까?
- 30. 개체 복사본을 만들려면 어떻게해야합니까?
실제로 폼과 노드 API가 혼합되어 있기 때문에 drupal_execute가 위험하다고 생각합니다. 결과 중 하나는 노드를 프로그래밍 방식으로 만들 때 종종 필요하지 않은 루프에서 제대로 작동하지 않는다는 것입니다. 일부 contrib 모듈에서는 필수 요소 일 수 있지만 최선의 해결 방법입니다. – FGM