Magento中电影产品的自动填充信息

时间:2012-01-18 19:03:31

标签: magento rotten-tomatoes

我正在与Magento CE 1.6合作开展一个项目,我们需要一个简单的方法来填充DVD和Blu-Rays产品中的电影信息以获得经销商电子商务。我将使用Rotten Tomatoes API,它似乎非常适合我们的目的,但事情就是这样:我们不想在New Product对话框中输入电影的每个细节,相反,我们想要获取信息自动使用电影名称作为提示(API完全支持此功能)。我认为我们可以通过两种方式实现这一目标:

  1. 让管理员只输入电影的名称和 定期创建并运行一个脚本来获取其余部分 使用API​​获取信息并直接在数据库中更新数据。我去过 当产品被保存并且不想要时,观察数据库的变化 那样做。

  2. 编辑Magento代码以使新产品表单可自动填充, 一旦输入了电影名称,可能使用ajax。 Zend框架不是 我的坚强,似乎也很难。

  3. 我是否从严峻的角度看到了这个问题?可能还有其他API吗?还是Magento扩展?或者其他电子商务?!

1 个答案:

答案 0 :(得分: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作业上定期拉。