以编程方式设置商店特定产品属性

时间:2014-04-14 21:52:11

标签: magento

此代码:

  Mage::getModel('catalog/product')
    ->setStoreId(3)
    ->load(200445)
    ->setName("FooBar")
    ->save(); 

收益异常:

  

具有'foo-bar'url_key属性的产品已存在。

产品 200445 已分配到托管 StoreID 3 的网站。我正在模仿Admin商店。 Magento Enterprise 1.13.1。

2 个答案:

答案 0 :(得分:3)

试试这个。比加载产品并保存产品更快:

Mage::getSingleton('catalog/product_action')->updateAttributes(
    array(200445),  //array with product ids here
    array('name'=>'FooBar'), //array with attributes to update
    3 //store id.
);

答案 1 :(得分:2)

url-key属性自动从您设置的name属性派生。我的猜测是在产品保存控制器操作的某处检查了URL密钥,如果URL密钥已经存在,则附加一个唯一的编号。

您可以使用setUrlKey('foo-bar-1')定义唯一的网址密钥,轻松对代码执行相同操作,其中foo-bar-1是唯一的网址密钥。

所以你的代码是:

Mage::getModel('catalog/product')
->setStoreId(3)
->load(200445)
->setName("FooBar")
->setUrlKey('foo-bar-1')  //Make sure this is always unique.
->save();

如果您想循环浏览产品并确保您设置的每个网址密钥都是唯一的,请查看一些涵盖该主题的解决方案:https://magento.stackexchange.com/a/7444/593