我正在与Magento CE 1.6合作开展一个项目,我们需要一个简单的方法来填充DVD和Blu-Rays产品中的电影信息以获得经销商电子商务。我将使用Rotten Tomatoes API,它似乎非常适合我们的目的,但事情就是这样:我们不想在New Product对话框中输入电影的每个细节,相反,我们想要获取信息自动使用电影名称作为提示(API完全支持此功能)。我认为我们可以通过两种方式实现这一目标:
让管理员只输入电影的名称和 定期创建并运行一个脚本来获取其余部分 使用API获取信息并直接在数据库中更新数据。我去过 当产品被保存并且不想要时,观察数据库的变化 那样做。
编辑Magento代码以使新产品表单可自动填充, 一旦输入了电影名称,可能使用ajax。 Zend框架不是 我的坚强,似乎也很难。
我是否从严峻的角度看到了这个问题?可能还有其他API吗?还是Magento扩展?或者其他电子商务?!
答案 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作业上定期拉。