it-swarm-ko.tech

프로그래밍 방식으로 간단한 '페이지'노드를 작성하는 방법

프로그래밍 방식으로 페이지 노드를 만드는 방법에 대해 Drupal 6 documentation 을 이미 발견했습니다.
Drupal 7에서 어떻게 달성 할 수 있습니까?


전략을 변경했으며 다른 방법을 사용하고 있지만 다음과 같은 오류가 발생합니다.

치명적인 오류 : 198 행의 C :\...\...\...\...\modules\field\field.attach.inc에서 빈 속성에 액세스 할 수 없습니다.

다음 코드를 사용하고 있습니다.

$form_state = array();
module_load_include('inc', 'node', 'node.pages');

$node = array('type' => 'page');
$form_state['values']['uid'] = 1;
$form_state['values']['name'] = 'admin';

$form_state['values']['title'] = 'Programatic Page';
$form_state['values']['language'] = 'en';

$form_state['values']['body']['en'][0]['value'] = 'My own value';
$form_state['values']['body']['en'][0]['summary'] = 'My own summary';
$form_state['values']['body']['en'][0]['format'] = 'filtered_html';

$form_state['values']['menu']['enabled'] = 1;
$form_state['values']['menu']['link_title'] = 'Auto-page';
$form_state['values']['menu']['description'] = 'Own Programatic Page';
$form_state['values']['menu']['parent'] = 'main-menu:0';
$form_state['values']['menu']['weight'] = 5;

$form_state['values']['path']['alias'] = 'auto-page';
$form_state['values']['comment'] = 1;

$form_state['values']['status'] = 1;
$form_state['values']['promote'] = 0;
$form_state['values']['revision'] = 0;

$form_state['values']['op'] = t('Save');

drupal_form_submit('page_node_form', $form_state, $node);

문제가 있습니까?


Firebug (Mozilla Firefox 플러그인)를 사용하여 요소 이름을 알아 낸 다음 적절한 값으로 채 웁니다.
Drupal 7에서 프로그래밍 방식으로 '페이지'노드 만들기는 다음 코드를 사용하여 수행됩니다.

global $user;

$customNode = new stdClass();

$customNode->type = 'page';
node_object_prepare($customNode);
$customNode->uid = $user->uid;
$customNode->name = $user->name;

$customNode->title = 'Your page title';
$customNode->language = 'en';
$customNode->body[$customNode->language][0]['value'] = 'Your value';
$customNode->body[$customNode->language][0]['summary'] = 'Your summary';
$customNode->body[$customNode->language][0]['format'] = 'filtered_html';

$customNode->menu['enabled'] = 1;       // 1 to enable providing a link in main menu
$customNode->menu['link_title'] = 'Your page link title';
$customNode->menu['description'] = 'Your page description';
$customNode->menu['parent'] = 'main-menu:0';
$customNode->menu['weight'] = 2;

$customNode->path['alias'] = 'Your Alias';
$customNode->comment = 1;

$customNode->status = 1;        // 1 means published
$customNode->promote = 0;
$customNode->revision = 0;

$customNode->changed = $_SERVER['REQUEST_TIME'];
$customNode->created = $_SERVER['REQUEST_TIME'];

node_submit($customNode);
node_save($customNode);

이것은 완전히 작동하지 않습니다.
모든 값을 사용하여 페이지를 성공적으로 만들었지 만 링크가 기본 메뉴 탐색에 표시되지 않습니다 (홈 탭 근처의 기본 메뉴 탭에 있음).
작성된 콘텐츠에서 확인한 후 거기에 있고 "편집"버튼을 통해 액세스 한 후 "저장"(누르지 않고 편집)을 누르면 기본 메뉴에 나타납니다.

생성되면 자동으로 표시되기를 원합니다. 당신은 어떤 아이디어가 있습니까?

4
Peter

Devel 프로젝트에는 더미 컨텐츠를 생성하기위한 Devel Generate라는 모듈이 포함되어 있습니다. 예를 들어 사용할 수 있습니다. 필요한 부분은 devel_generate.inc 파일 에 있다고 생각합니다.

4
Matt V.

이 작업을 수행하는 방법의 예는 여기에서 시도해 보았습니다.
Drupal 7 에서 프로그래밍 방식으로 노드, 주석 및 분류법을 만드는 방법

(이것은 실제로 codeintheholeanswer 에 의해 발견되었으므로 덕분에)

1
Yarin