2012-02-15 136 views
4

我有一个多商店设置 - StoreA,StoreB和StoreC。和控制器(使用StoreA URL)我编辑产品的范围内:Magento - 保存产品时未设置“使用默认值”

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

如果我再转到管理/编辑产品的特定产品,我发现ATTRIBUTE1已正确设置,但是我还发现,如果我在“选择店铺视图”中选择StoreA,我发现所有“使用默认值”复选框(对于StoreA)都已设置为false。

问题:

  1. 如何修改上面的代码,以便“使用默认值”
  2. 一旦上面的代码已被执行(和“使用 的复选框为StoreA保持真实默认值 值“,StoreA设置为false),我如何将StoreA的”使用默认值 值“值恢复为true?

编辑:

新增截图:enter image description here

回答

1

我不是在“使用默认值”完全清楚,在方框中打勾,你所看到的,但有两件事我注意到了。

使用工厂模式

您的代码:

$_product = new Mage_Catalog_Model_Product(); 

使用​​,这是Magento的标准:

$_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.我在这里的理由是,它正在被拯救整个产品添加的可能默认值,而不仅仅是一个特定的属性。

如果这没有帮助,也许您所看到的屏幕截图可能会更好地帮助我查看问题。

+0

好主意重新工厂模式。我也上传了截图。重新 - > updateAttributes,我注意到最后一个参数是商店ID。我认为这是关键 - 我会测试一下。任何想法都是问题的第二部分? – mas 2012-02-15 20:17:31

+0

啊,如果你没有设置商店ID将是一个问题。这是否解决了问题,还是应该进一步排除故障? – 2012-02-15 21:18:34

+0

谢谢。根据你的回答,我发现你可以使用Mage :: app() - > setCurrentStore(Mage_Core_Model_App :: ADMIN_STORE_ID);设置默认商店。这解决了(1)。为了解决(2),我发现你可以设置$ _product-> setName(false)或$ _product-> setData('attribute',false) - 但鉴于我有很多属性要设置我试图使用 - > updateAttributes,但这是给出以下问题:[link](http://stackoverflow.com/questions/9302279/magento-setting-product-attributes-use-default-value-using-updateattributes) – mas 2012-02-15 22:19:25