4

Drupal ノード レコードを追加するためのレシピを探しています。3 つのテーブルを特定しました。

node_revisions
nid=249  - vid + 1?
vid=248  - auto-increment

node:
nid=250  - vid + 1?
vid=249  - auto-increment

content_type_my_content
vid=248  - from node_revisions table?
nid=249  - from node table? 

私は正しい軌道に乗っていますか?これにはいくつかのヘルパー関数がありますか?

4

3 に答える 3

5

プログラムでノードを作成する場合は、Drupal API を使用してください。

$node オブジェクトを作成することから始めます。タイトル、タイプ、ステータス、本文、および CCK フィールドを入力します。最後に、node_save($node); を呼び出します。

node_save はノード オブジェクトを保存し、必要なデータベース作業を行います。

これをチェックしてください:

http://api.drupal.org/api/function/node_save/6

http://mediumexposure.com/how-build-node-drupal-programmatically/

コンテンツ タイプの各タイプがフィールドとして持つものを確認する最も簡単な方法は、ノード (ページなど) を作成し、var_dump() を使用してノードの内容を確認することです。これにより、ノード オブジェクト作成スクリプトで使用する必要があるすべてのフィールドが表示されます。

フォーム配列を作成し、それに対して drupal_execute() を呼び出して、データベースに保存する前に検証が実行されるようにする必要があると言う人もいます。どちらでも構いません。

于 2010-03-26T18:21:03.680 に答える
2

ケビン - あなたの助けで、私は良い進歩を遂げました. ノードおよび CCK フィールドが入力されます。

場所 (経度/緯度) は入力されていますが、表示画面に表示されません。チェックボックスが入力されていません。

global $user;
$newnode = new stdClass();
$newnode->title = 'New node title';
$newnode->body = "this is a new node, created by import function";
$newnode->uid = $user->uid;
$newnode->type = 'items';
$newnode->status = 1;
$newnode->promote = 0;

// CCK fields
$newnode->field_myfield1[0]['value'] = 'test 1';
$newnode->field_myfield2[0]['value'] = 'test 2';
$newnode->field_mycheckbox[0]['value'] =  1;

// longitude, lalitude
// $newnode->locations[0]['lid'] = ?;
$newnode->locations[0]['street'] = 'xx';
$newnode->locations[0]['city']   = 'xx';
$newnode->locations[0]['province']  = 'xx'; 
$newnode->locations[0]['postal_code']  = 'xx'; 
$newnode->locations[0]['latitude']  = 0; 
$newnode->locations[0]['longitude'] = 0; 


$newnode = node_submit($newnode);
node_save($newnode);
content_insert($newnode); 
于 2010-03-26T20:46:48.113 に答える
1

わかった。ここに完全なレシピがあります。あとは Drupal が自動的にやってくれます。

global $user;
// Node fields
$newnode = new stdClass();
$newnode->title =  $data[0];
$newnode->body =  $data[1];
$newnode->uid = $user->uid;
$newnode->type = 'mytype';
$newnode->status = 1;
$newnode->promote = 0;

// CCK fields
$newnode->field_myfield1[0]['value'] =  $something;
$newnode->field_myfield2[0]['value'] =   $something;
$newnode->field_my_checkbox[0]['value'] =  $something;

// longitude, latitude
$newnode->field_loc_latitude[0]['street'] =  $something; 
$newnode->field_loc_latitude[0]['city'] =   $something;
$newnode->field_loc_latitude[0]['province'] =  $something;
$newnode->field_loc_latitude[0]['postal_code'] =  $something;
$newnode->field_loc_latitude[0]['latitude'] =  '';
$newnode->field_loc_latitude[0]['longitude'] =  '';

$newnode = node_submit($newnode);
node_save($newnode);
content_insert($newnode); 
于 2010-03-27T01:12:08.677 に答える