1

私はMagentoCE1.6を使用して、再販業者のeコマース用にDVDやBlu-Ray製品に映画情報を簡単に入力する方法が必要なプロジェクトに取り組んでいます。私はRottenTomatoesAPIを使用するように設定されていますが、これは私たちの目的には非常に適しているようですが、これが重要です。映画のすべての詳細を[新製品]ダイアログに入力する必要はありません。逆に、フェッチする必要があります。映画名をヒントとして自動的に使用する情報(APIはこれを完全にサポートします)。私はこれを2つの方法で達成できると思いました。

  1. 管理者に映画の名前のみを入力させ、APIを使用して残りの情報をフェッチし、DB内のデータを直接更新するスクリプトを定期的に作成して実行するようにします。製品が保存されたときのDBの変更を監視してきましたが、それはしたくありません。

  2. 映画の名前を入力したら、Magentoコードを編集して、新しい製品フォームを自動入力可能にします。おそらくajaxを使用します。Zendフレームワークは私の強みではなく、ちょっと難しいようです。

私はこの問題を厳密な角度から見ていますか?別のAPIはありますか?またはMagento拡張機能ですか?または別のeコマース?!

4

1 に答える 1

2

少し違うアプローチをお勧めします。管理インターフェースの拡張は困難ですが、可能です。これがより簡単な方法です。

方法#1-すばやく簡単

製品のリストを調べるスクリプトを自分で作成します。属性タイプ、カテゴリで選択することも、すべてを選択することもできます。次に、そのコレクションをループし、商品ごとにタイトルを取得し、映画APIをクエリして、商品の属性を設定します。次に、製品を保存して、次の製品に移動します。このようなもの:

注:管理者でカスタム属性を作成し、それらを属性セットに割り当ててください。

<?php
require_once 'app/Mage.php';
umask(0);
Mage::app('default');

function getVideoDataFromAPI($title)
{
  // get your data from the API here...
  return $data;
}

$collection = Mage::getResourceModel('catalog/product_collection')
  ->addAttributeToFilter('attribute_set_id', $yourAttributeSetId)
  ->addAttributeToFilter('year', ''); // <-- Set a field here that will be empty by default, and filled by the API. This is '' because it won't be null.

foreach ( $collection->getAllIds() as $id ) {
  $product = Mage::getModel('catalog/product')->load($id);
  $videoData = getVideoDataFromAPI($product->getName());
  if ( empty($videoData) ) { continue; }
  $product->setYear($videoData['year'])
    ->setRating($videoData['rating'])
    ->save();
}
?>

方法#2-上記を実行しますが、カスタム拡張機能を使用します

私はいつもスクリプトよりも拡張機能が好きです。それらはより安全でより強力です。拡張機能を使用すると、製品の管理者リストを作成したり、好きなようにフィルタリングしたり、ビデオデータを手動でプルするための一括アクションを実行したりできます。定期的にプルするようにcronジョブで設定することもできます。

于 2012-01-19T21:19:32.643 に答える