【问题标题】:Magento - Set product attribute to use default valuesMagento - 将产品属性设置为使用默认值
【发布时间】:2012-05-06 00:51:21
【问题描述】:

这个问题之前已经问过很多次了,但没有有效的答案。

我有多家商店,并且某些属性已被覆盖。我想通过脚本将这些属性更改为“使用默认值”。

这是显示商店视图和“使用默认值”复选框的图像 http://dl.dropbox.com/u/3209649/storeviews-and-defaultvalues.png(还不能发图片)

app/code/core/Mage/Adminhtml/controllers/Catalog/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);
    }
}

以下代码尝试使用相同的方法将商店 3 中的产品 1 的“名称”属性设置为“使用默认值”。

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 未将其设置为 'use default value'

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

相关链接在这里 -> http://pastebin.com/raw.php?i=j7fwu9H6 (也不允许发布链接)

【问题讨论】:

  • 很抱歉,目前还不清楚这里问的是什么。
  • 我已对其进行了更新并添加了图片链接。现在有意义吗?
  • 您也可以尝试这里描述的 SQL 方法:magento.stackexchange.com/questions/1199/…

标签: magento mage magento-1.6


【解决方案1】:

这不起作用,因为您需要将当前商店作为 管理商店 才能进行此类操作。

要使特定的商店视图使用给定属性的默认值:

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

【讨论】:

  • 我不确定我是否理解它为什么会这样,但我可以确认它确实如此。很长时间以来,我一直在寻找解决方案。谢谢。
  • 您好,当我运行脚本时没有提供 currentStore,我遇到了一个问题,它破坏了我的后台,使用产品上的自定义值更改默认值。在我的脚本中,我刚刚更新了产品重量,但它为产品随机创建了自定义值,例如自定义价格或自定义可见性。后来我在 db 中删除了它,但我不明白为什么调用 setCurrentStore 函数很重要...你能解释一下吗?
  • Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); 在查看完美代码数小时后,我唯一的问题是我需要这个。
猜你喜欢
  • 2017-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多