2

私は、APIから製品をプルし、スクリプトの実行時に各製品をノードとしてdrupaldbに配置する小さなシステムを構築しています。私はDrupalを初めて使用するので、愚かさを許していただければ幸いです。これが私がこれまでに行ったことの非常に簡単な内訳です​​。

  1. php simplexmlを使用して、APIを使用して製品を抽出しました。

2. php変数に製品名の説明、URLなどを保存しました。

  1. この時点で、それらをノードとしてDrupalに追加する必要があります。私はこのコードをWebから取得しましたが、これはまさに私が必要としているものです(私は思います)

    $node = new stdClass(); 
    $node->type = "page"; 
    $node->title = "Title";
    $node->language = LANGUAGE_NONE; 
    $node->path = array('alias' => 'your node path'); // Setting a node path
    node_object_prepare($node); // Set some default values.
    $node->uid = 1; 
    

したがって、上記の各変数にPHP変数を入れるだけで、うまくいきます。しかし、私はこれらすべてと私のコードをどこに置くかで立ち往生していますか?drupalルートに新しいphpファイルを作成するのですか?それに含めるファイル。これを行う方法。

どんな助けでもありがたいです。

よろしく、アーマー。

4

2 に答える 2

4

Ghommeyが言った方法は機能しますが、モジュールを作成してからページにdrupal_bootstrap()移動する必要がない場合は、drupalを.phpファイルに含めることができます。ドキュメントへのリンクここにコードサンプルがあります:

define('DRUPAL_ROOT', '/path/to/drupal');
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

//add create node object here
node_save($node);
于 2013-01-22T14:20:18.313 に答える
3

Drupalには、独自のphpコードを追加できるモジュールシステムがあります。

モジュールには、少なくとも2つのファイル(a.moduleとファイル)が必要.infoです。

したがって、というモジュールを作成するmyimporterには、Drupalルートディレクトリを基準にして両方のファイルを作成する必要があります。

sites/all/modules/custom/myimporter/myimporter.module
sites/all/modules/custom/myimporter/myimporter.info

.moduleファイルにはphpコードが含まれ、.infoファイルにはモジュールメタ情報が含まれます。

情報ファイルの詳細については、http://drupal.org/node/1075072を参照してください。

モジュールを作成したら、/ admin/modulesに移動してモジュールを有効にする必要があります。

モジュールには、メニューフックを使用したメニュー宣言が含まれている必要があります: http ://api.drupal.org/api/drupal/modules!system!system.api.php / function / hook_menu / 7

したがって、myimporter.moduleファイルは次のようになります。

  <?php 

  function myimporter_menu() {
    // Register myimporter/demo
    $items['myimporter/demo'] = array(
      'page callback' => 'myimporter_demo',
    );
    return $items;
  }

  function myimporter_demo() {
    // add your node import code here
    return "Hello world";
  }

新しいメニューフック要素を追加したら、Drupalキャッシュをクリアする必要があります。その後、ブラウザを開いてに移動しますhttp://localhost/myimporter/demo

于 2013-01-22T14:04:21.317 に答える