質問

Drupalサイトに店舗の在庫を置くことを計画していますが、CCKを使用してDrupalにデータを自動的に入力するスクリプト(おそらくpython / php?)を作成することは可能ですか?事前に感謝します!

役に立ちましたか?

解決

外部(大量)インポートのさまざまなシナリオ専用のDrupalモジュールがいくつかあります-この概要を確認してくださいオプション/比較用。

非常に具体的なニーズがある場合は、既存のモジュールと googletorpsが提供するリンク/ヒント(+1)。一般化を無視しながら実際の挿入を行う方法についてのガイダンス。

他のヒント

最速かつ最も簡単なことは、大量の投稿をサーバーに送信してノードの負荷などにリソースを費やす代わりに、ケース用に作成した小さなDrupalモジュールを使用することです。

とにかく、これに必要なものは、Macがこちら

この場合、特別なfile_fieldをすべて必要とするわけではありませんが、持っている可能性のあるさまざまなcckフィールドの値と、ノードの本体とタイトルを挿入する必要があります。データベースから直接取得できる値を設定したら、ノードを保存できます。

dbに直接接続する場合、drupalに使用するものと同じタイプにするか、Drupal APIの外部で使用する必要があります。 drupal APIを使用する場合は、 db_set_active()

HenrikとGoogletorpにより、すでに多くの良い提案がなされています。

戦略を設計するために考慮すべきいくつかの追加要素:

  1. 本格的なeストア(おそらく ubercart で実現)を行うつもりですか単にサイト訪問者にインベントリを提示するために、ノードのビューを設定するだけですか?
  2. いくつの製品をインポートしますか?
  3. どれくらいの頻度で再インポートしますか?

確実に除外したいソリューション:

  • POST: googletorpのコメントどおり、非常に複雑になります。
  • 外部スクリプト: drupal APIがコアなものであれ、ubercartのものであれ、本当に危険な生活を送ったり、時間を浪費したりしない限り、避けられません。データは複数のテーブルに散在しており、ノードが挿入されるとトリガーされるフックがたくさんあります。唯一の例外は、最初にブートストラップを実行するPHPスクリプトを実行する場合です(その動作を確認するには、 index.php または xmlrpc.php の構造を参照してください)。その場合、私はむしろモジュール全体に行きたいと思います。はるかにエレガントで、移植性があり、保守可能です。

サポートするソリューション:

  • 独自のモジュールを実行してください! googletorpが指摘したように、この回答
  • はい、それは...私が信じている唯一のものです! ;)

しかし、私が学んだことは同様に重要であり、インポートに適したデータのソースを選択することです。私の意見は次のとおりです。

  • DBから直接読み込む:エクスポートするアプリケーションのDBスキーマが適切なクエリを作成するのに十分に単純な場合、一度だけすべてのものをインポートする必要がある場合にのみ有効です。 。ソフトウェアは変更および進化し、DBスキーマがそれに続きます。 2か月後に再インポートが必要になり、他のアプリケーションのスキーマが変更された場合、コードの変更、テストの変更などが必要になります。
  • XMLファイルを使用: PHPの SimpleXML および Xpath + PHPタイプキャストを使用して、元のアプリケーションがこの形式でエクスポートできる場合、それは本当に必要なデータを必要な形式で数分で取得できます。この方法の唯一の欠点は、ファイルに依存することです。したがって、定期的に無人で自動インポートを行う必要がある場合、発生する可能性のあるすべての問題(ファイルシステムの不正なアクセス許可、破損したファイル、間違ったエンコード...)を予測し、対策を講じることは少し苦痛です。逆に、この方法は、誰かが常にインポートプロセスを監督し、トラブルが発生した場合に介入できることがわかっているため、非常に気に入っています。
  • ウェブサービス:これは、自動で定期的にインポートする必要がある場合に最も気に入っているものです。最大の利点は、2つのアプリケーションが「話す」ことです。次のようなセッションを実際に行うことができるように、ビジネスロジックの一部を公開します。「やあ、先週から価格が変更されたすべての製品が必要です」 -「ここにいる、彼らは127でなければなりません、3つのカテゴリーで、あなたはそれをコピーしますか?」 -「ああ、そうだね...はっきり言って、127個のアイテムと3つのカテゴリ!」これにより、エラーや例外のトラップを多く簡単にします。 DrupalはWebサービスのコンシューマーおよびプロバイダーとして機能しますが、他のアプリケーションにもWebサービスを実装する必要がありますが、これは難しい場合もそうでない場合もあります。エクスポートアプリケーションに完全に依存します。

HTH!

CCKまたはそれ以外の場合、それは(おそらく)整形式のPOSTクエリであるため、確認してください。

ソースデータがMySQLにある場合、移行モジュールを見て作成しますコンテンツ。プロジェクトページからの抜粋を次に示します。

  

...は、他のソースからコンテンツをDrupalに移行するための柔軟なフレームワークを提供します(たとえば、Webサイトを別のCMSからDrupalに変換する場合)。すぐに使用できる、ノード、ユーザー、ファイル、用語、コメントなどのコアDrupalオブジェクトの作成のサポートが含まれています-他の種類のコンテンツを移行するために簡単に拡張できます。コンテンツは、バンドルされたWebインターフェイス(Migrate UIモジュール)または含まれているDrushコマンド(強く推奨)を使用してインポートおよびロールバックされます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top