我有一个多商店设置,我正在为特定商店设置产品属性以使用“使用默认值”选项 - (即使用商店视图中的值),如下所示:
$_product = Mage::getModel('catalog/product');
$_product->load($productId);
$_product->setStoreId($storeId)->setName(false)->save();
这将$ productId的storeId的Name属性设置为使用“Use Default Value”
鉴于我有很多要设置的属性我试图使用:
Mage::getSingleton('catalog/product_action')->updateAttributes(array($productId), array('name' => false), $storeId);
但这并未将“使用默认值”复选框设置为true。
如何使用 - > updateAttributes设置商店值以使用“使用默认值”选项?
截图:
答案 0 :(得分:4)
“使用默认值”标志不会在任何地方存储在数据库中。
Magento核心在保存产品时使用该标志来执行此操作:
/**
* Check "Use Default Value" checkboxes values
*/
if ($useDefaults = $this->getRequest()->getPost('use_default')) {
foreach ($useDefaults as $attributeCode) {
$product->setData($attributeCode, false);
}
}
在做其他事情之前。
我会查看Mage_Adminhtml_Catalog_ProductController
(app / code / core / Mage / Adminhtml / controllers / Catalog / ProductController.php)并了解Magento核心是如何做到的。
具体为saveAction()
和_initProductSave()
我希望这能指出你正确的方向。
答案 1 :(得分:1)
只需使用0作为商店ID(管理商店),这与Magento Admin中的默认值相同。
Mage::getSingleton('catalog/product_action')
->updateAttributes(
array($productId),
array('name' => false),
0);
如果您已设置商店视图范围,则必须进入并重新检查使用默认值,否则它将覆盖相关范围的属性。
可能有一种方法可以通过编程方式设置它们。我不确定。