以编程方式更改商店视图级别的产品属性

Her*_*tin 18 magento

我很抱歉,如果这个问题是微不足道的,但我一直在努力找到我在这里做错了什么.我试图在商店视图级别更改属性的值,但默认值也会更改,但不应该更改.当然,此属性设置为"store-view-scoped".为了简单起见,我尝试了产品名称.没有成功.

以下是我试过的不成功的测试......

你看到我在做错了吗?

非常感谢.


我的尝试:

$product = Mage::getModel('catalog/product')->load(PRODUCT_ID);
$product->setStoreId(STORE_ID)->setName('new_name')->save();

$product = Mage::getModel('catalog/product')->load(PRODUCT_ID);
$product->setStoreId(STORE_ID)->setStore(STORE_CODE)->setName('new_name')->save();

$product = Mage::getModel('catalog/product')->load(PRODUCT_ID);
$product->setStoreId(STORE_CODE)->setName('new_name')->save();

$product = Mage::getModel('catalog/product')->setStoreId(STORE_ID)->load(PRODUCT_ID);
$product->setName('new_name')->save();

$product = Mage::getModel('catalog/product')->setStoreId(STORE_ID)->load(PRODUCT_ID);
$product->setStoreId(STORE_ID)->setName('new_name')->save();
Run Code Online (Sandbox Code Playgroud)

我甚至尝试在产品型号加载之前添加以下行...

Mage::app()->setCurrentStore(STORE_ID);
Run Code Online (Sandbox Code Playgroud)

Her*_*tin 46

因此,这是在特定商店视图中更改特定产品属性的属性值的完整代码段.产品名称示例:

Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$product = Mage::getModel('catalog/product')->load(PRODUCT_ID);
$product->setStoreId(STORE_ID)->setName('my_new_product_name')->save();
Run Code Online (Sandbox Code Playgroud)

作为一个额外的答案,人们可​​能有兴趣将属性值更改为默认值.在这种情况下,必须将参数'false'传递给setAttribute:

Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$product = Mage::getModel('catalog/product')->load(PRODUCT_ID);
$product->setStoreId(STORE_ID)->setName(false)->save();
Run Code Online (Sandbox Code Playgroud)

  • 感谢分享错误 - 这是一个有用的提示. (4认同)

ʍǝɥ*_*ʇɐɯ 12

您需要将当前商店设置为代码块顶部的admin:

Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
Run Code Online (Sandbox Code Playgroud)