Magento 以编程方式设置特定于存储的产品属性

Magento 以编程方式设置特定于存储的产品属性,magento,Magento,此代码: Mage::getModel('catalog/product') ->setStoreId(3) ->load(200445) ->setName("FooBar") ->save(); 例外情况: 具有“foo bar”url\u key属性的产品已存在 产品200445已分配给托管StoreID 3的网站。我正在模仿管理员商店。Magento Enterprise 1.13.1。url键属性自动从您设置的名称属性派生

此代码:

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

具有“foo bar”url\u key属性的产品已存在


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

url键属性自动从您设置的
名称
属性派生。我的猜测是,URL键在product save controller操作中的某个位置被检查,如果URL键已经存在,则会附加一个唯一的数字

通过使用
setUrlKey('foo-bar-1')
定义唯一的URL键,您可以轻松地对代码执行相同的操作,其中
foo-bar-1
是唯一的URL键

所以你的代码应该是:

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

如果您想在产品中循环,并确保您设置的每个url键都是唯一的,请在此处查看一些解决方案,这些解决方案涵盖了该主题:

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

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

不起作用-我尝试使用随机字符串作为名称,得到了相同的错误