此代码:
Mage::getModel('catalog/product')
->setStoreId(3)
->load(200445)
->setName("FooBar")
->save();
收益异常:
具有'foo-bar'url_key属性的产品已存在。
产品 200445 已分配到托管 StoreID 3 的网站。我正在模仿Admin商店。 Magento Enterprise 1.13.1。
答案 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