Magento产品属性非常灵活,但每个产品具有动态值意味着您需要每个产品一个属性,这样做没什么意义,所以我假设这些属性值共享产品中的一些共同点所以你将拥有有限数量的属性(或一个?)。对于每个这样的属性,您应该先为其创建属性和后端模型,然后使用cron作业或事件从您的API更新属性值选项,并将它们本地缓存在数据库或其他方法中。您可以在模块的安装程序添加一个属性是这样的:
$installer->addAttribute('catalog_product', 'my_attr_code', array(
'label' => 'Attribute Name',
'required' => false,
'input' => 'select',
'source' => 'namespace/source',
'default' => 'none',
'position' => 1,
'sort_order' => 3,
));
或者推出自己的SQL INSERT语句为eav_attribute
表。确保将新属性分配给在后端设置的属性,以便它可用于您的产品。然后你在My_Namespace_Model_Source
延伸Mage_Eav_Model_Entity_Attribute_Source_Table
(假设你想为你的属性值的选择输入),并在最小实现下列方法创建一个模型:
getAllOptions()
getOptionText($value)
因此,这些将来自于本地缓存的动态选项拉和在大多数情况下,您的新属性的行为与Magento中的其他属性相同。请务必使用智能缓存,因为这些方法可能会在一次页面加载中多次触发。在产品创建或编辑页面显示之前,可能会出现一个您可以观察到的事件,否则只是覆盖类或控制器或使用Magento cron任务。
编辑:您也可以使用现有的Magento属性模型,并通过现有的API创建您的选项值,但我假设要执行同步或出于其他原因,您可能需要一些额外的元数据,一个自定义的后端模型。
接受答案? – ColinM 2014-07-15 20:33:10
@ColinM哎呀。完成。 :) – 2014-07-16 08:02:17