0

Web サイトの drupal 6 データベースに多くのコンテンツを挿入するために PHP を作成しようとしています。コンテンツ タイプには 3 つのカスタム フィールドがあります。

field_theme_preview_demo_link - テキスト フィールド

field_theme_preview_content_styl - テキストセレクター

field_theme_preview_thumb - 「alt」付きの画像フィールド

画像を正しいディレクトリに手動でコピーしました。

コンテンツ タイプを作成しました (そして、問題がないことを確認するためにコンテンツを手動で挿入しました)。

次に、プログラムでコンテンツを挿入するためのコードサンプルを見つけました...

Drupal CCK コンテンツをプログラムまたは API 経由で作成する

および http://drupal.org/node/458778#comment-1653696 (これについては、D6 に提案されている mod を理解できませんでした)。

変更しようとしましたが、機能しませんでした。新しいコンテンツは作成されますが、画像フィールドは空白です。(このコードを実行するには、「PHP コードの実行」ブロックに貼り付けます。)

global $user;
$newnode = new stdClass();
$newnode->title = 'New node title';
$newnode->body = "the body";
$newnode->uid = $user->uid;
$newnode->type = 'theme_preview';
$newnode->status = 1;
$newnode->promote = 0;
$newnode->active = 1;

$newnode->field_theme_preview_demo_link[0]['value'] = 'the link';
$newnode->field_theme_preview_content_styl[0]['value'] = 'Books';

$newnode->field_theme_preview_thumb = array(
    array(
      'fid' => 'upload',
      'alt' => 'the alt',
      'filename' =>  'sites/default/files/theme_preview_thumbs/41531.jpg',
      'filepath' => 'sites/default/files/theme_preview_thumbs',
      'filesize' => filesize('sites/default/files/theme_preview_thumbs/41531.jpg'),
    ),
  );

node_save($newnode);
4

3 に答える 3

2

フィールドを「アップロード」に設定するfidことは、実際にファイルがアップロードされているときにノードのフォームによって行われることです。プログラムでコンテンツを生成している場合は、別のfid場所から を取得する必要があります。

おそらく、ファイル APIを手動で使用して、ファイル システムのどこかにあるファイルをファイル データベースに入力しfid、結果のオブジェクトから描画する必要があります。

于 2012-12-13T01:52:11.773 に答える
1

http://drupal.org/project/node_exportこのモジュールを使用して、コンテンツを特定のコンテンツタイプにインポートまたはエクスポートします。これは実際に機能し、画像も自動的にアップロードされます。

このモジュールを使用するために考慮しなければならないことの1つは、ノードをインポートした後、画像がそのコンテンツと一致していることを確認することです。

このモジュールを使用して、ローカルサーバーサイトから数百のニュース記事を自分のWebサイトにアップロードしました。

于 2012-12-13T09:48:15.943 に答える