2012-04-25 100 views
6

之前已詢問過很多次,但沒有正常工作答案。Magento - 將產品屬性設置爲使用默認值

我有多個商店,一些屬性已被覆蓋。我想通過腳本將這些屬性更改爲'使用默認值'。

這裏是一個圖像示出商店的觀點和「使用默認值」複選框 http://dl.dropbox.com/u/3209649/storeviews-and-defaultvalues.png(不允許又發表圖片)

應用程序/代碼/核心/法師/ Adminhtml /控制器/目錄/ ProductController.php當爲任何屬性選擇「使用默認值」時,setData()與false一起使用。

/** 
* Check "Use Default Value" checkboxes values 
*/ 
if ($useDefaults = $this->getRequest()->getPost('use_default')) { 
    foreach ($useDefaults as $attributeCode) { 
     $product->setData($attributeCode, false); 
    } 
} 

以下代碼嘗試使用相同的方法將商店1中的商品1的'name'屬性設置爲'使用默認值'。

require_once '../app/Mage.php'; 
Mage::app(3); 

$product = Mage::getModel('catalog/product')->load(1); 

$product->setData('name', false); # as used in ProductController.php 
$product->save(); 

使用

$product->setData('name', 'anything'); 

正確設置「名稱」屬性「東西」,但沒有將其設置爲「使用默認值」

「使用默認值」是沒有存儲在數據庫中的任何地方,因此在管理界面的控制器中,必須有另一個刪除屬性行的過程?這裏

相關鏈接 - >http://pastebin.com/raw.php?i=j7fwu9H6 (不允許張貼鏈接尚未要麼)

+0

我很抱歉,但目前還不清楚什麼東西被要求在這裏。 – 2012-04-25 11:33:01

+0

我已更新它並添加了一個鏈接到圖像。現在有意義嗎? – 2012-04-25 12:03:07

+1

您也可以嘗試如下所述的SQL方法: http://magento.stackexchange.com/questions/1199/how-to-set-product-attribute-to-use-default-by-sql – WonderLand 2013-03-28 15:49:29

回答

12

這不起作用,因爲你需要的電流店作爲管理店對於這種操作。

做具體的商店視圖使用默認值對於給定的屬性:

Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); 

$product = Mage::getModel('catalog/product') 
    ->load($product_id)   // in your case: 1 
    ->setStoreId($store_id)  // in your case: 3 
    ->setData($attr, false)  // in your case: 'name' 
    ->save(); 
+0

I'米不知道我明白爲什麼它這樣工作,但我可以證實它。很長一段時間以來我一直在尋找解決方案。謝謝。 – 2012-04-25 14:32:33

+0

嗨,我在運行腳本時沒有提供currentStore時遇到問題,它打破了我的後臺辦公室,改變了產品上的自定義值的默認值。在我的腳本中,我剛剛更新了產品重量,但它爲產品隨機創建了自定義值(如自定義價格或自定義可視性)。之後我在db中刪除它,但是我不明白爲什麼調用setCurrentStore函數很重要......你能解釋一下嗎? – beluga 2013-07-12 13:33:31

+0

'Mage :: app() - > setCurrentStore(Mage_Core_Model_App :: ADMIN_STORE_ID);'查看完美的代碼幾個小時後,我唯一的問題是我需要這個。 – FactoryAidan 2016-06-20 21:51:28

相關問題