Magento-将产品属性设置为使用默认值

Magento-将产品属性设置为使用默认值,magento,mage,magento-1.6,Magento,Mage,Magento 1.6,这已经被问过很多次了,但是没有有效的答案 我有多个存储,一些属性已被覆盖。我想将这些属性更改为脚本中的“使用默认值” 这是一张显示商店视图和“使用默认值”复选框的图像 (尚不允许发布图像) 在app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.phpsetData()与false一起用于为任何属性选择“使用默认值”时的第二个参数 /** * Check "Use Default Value" checkboxes

这已经被问过很多次了,但是没有有效的答案

我有多个存储,一些属性已被覆盖。我想将这些属性更改为脚本中的“使用默认值”

这是一张显示商店视图和“使用默认值”复选框的图像 (尚不允许发布图像)

app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.phpsetData()与false一起用于为任何属性选择“使用默认值”时的第二个参数

/**
 * Check "Use Default Value" checkboxes values
 */
if ($useDefaults = $this->getRequest()->getPost('use_default')) {
    foreach ($useDefaults as $attributeCode) {
        $product->setData($attributeCode, false);
    }
}
下面的代码尝试使用相同的方法将store 3中的产品1的“name”属性设置为“use default values”

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');
将“name”属性正确设置为“anything”,但false未将其设置为“使用默认值”

“使用默认值”未存储在数据库中的任何位置,因此在管理员界面的控制器中必须有另一个过程来删除属性行

此处有相关链接->
(也不允许发布链接)

这不起作用,因为您需要将当前存储作为此类操作的管理存储

要使特定存储视图使用给定属性的默认值,请执行以下操作:

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();

很抱歉,我不清楚这里有什么问题。我已经更新了它并添加了一个图片链接。现在它有意义了吗?您也可以尝试这里描述的SQL方法:我不确定我是否理解它为什么以这种方式工作,但我可以确认它是这样的。我一直在寻找解决这个问题的方法。谢谢。嗨,我遇到了一个问题,当我运行一个脚本而没有给currentStore时,它破坏了我的后台,用产品上的自定义值更改默认值。在我的脚本中,我刚刚更新了产品重量,但它为产品随机创建了自定义值,如自定义价格或自定义可见性。我后来在db中删除了它,但我不明白为什么调用setCurrentStore函数很重要。。。你能再解释一下吗?
Mage::app()->setCurrentStore(Mage\u Core\u Model\u app::ADMIN\u STORE\u ID)在花了好几个小时寻找完美的代码之后,我唯一的问题是我需要这个。