2012-04-25 136 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