Magento - 保存产品而不设置“使用默认值”

时间:2012-02-15 18:31:25

标签: magento

我有一个多店设置 - StoreA,StoreB和StoreC。在控制器内(使用StoreA url)我正在编辑产品,如下所示:

$_product = new Mage_Catalog_Model_Product();
$_product->load($productId);
$_product->setData('attribute1','somevalue');
$_product->save();

如果我然后转到该特定产品的管理员/编辑产品,我发现attribute1已正确设置但我也发现如果我在“选择商店视图”中选择StoreA,我会发现所有“使用默认值”值“复选框(对于StoreA)已设置为false。

问题:

  1. 如何修改上面的代码,以便“使用默认值” StoreA的复选框仍然正确
  2. 执行上述代码后(以及“使用默认值”) 值“为StoreA设置为false”,如何恢复“使用默认值” 对于StoreA,值“值是否为真?”
  3. 修改

    添加了屏幕截图:enter image description here

1 个答案:

答案 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.我的理由是,通过保存整个产品而不仅仅是特定属性,可以添加默认值。

如果这没有帮助,也许您所看到的截图可以更好地帮助我将问题直观化。