2012-02-15 80 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