我有一个多店设置 - StoreA,StoreB和StoreC。在控制器内(使用StoreA url)我正在编辑产品,如下所示:
$_product = new Mage_Catalog_Model_Product();
$_product->load($productId);
$_product->setData('attribute1','somevalue');
$_product->save();
如果我然后转到该特定产品的管理员/编辑产品,我发现attribute1已正确设置但我也发现如果我在“选择商店视图”中选择StoreA,我会发现所有“使用默认值”值“复选框(对于StoreA)已设置为false。
问题:
修改
添加了屏幕截图:
答案 0 :(得分:1)
我对你看到的“使用默认值”复选框并不完全清楚,但我注意到了两件事。
使用工厂模式
您的代码:
$_product = new Mage_Catalog_Model_Product();
使用Magento标准的factory pattern:
$_product = Mage::getModel('catalog/product');
这本身并不是问题所在,但要记住这一点。
仅更新产品属性
接下来,如果您只保存特定属性,那么只更新该属性会更快(并可能避免您的问题)。像这样:
$attribute = array('attribute_code' => 'attribute_value');
Mage::getSingleton('catalog/product_action')
->updateAttributes($_product->getId(), $attribute, 0);
Reference for the updateAttributes() method.我的理由是,通过保存整个产品而不仅仅是特定属性,可以添加默认值。
如果这没有帮助,也许您所看到的截图可以更好地帮助我将问题直观化。