1

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

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

  2. 输入电影名称后,编辑 Magento 代码以使新产品表单可自动填写,可能使用 ajax。Zend 框架不是我的强项,而且似乎也有点难。

我是否从正确的角度看到了这个问题?可能还有其他 API 吗?还是 Magento 扩展?还是其他电商?!

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 回答