【问题标题】:Magento change attribute inside order product rowMagento 更改订单产品行内的属性
【发布时间】:2016-08-10 11:21:16
【问题描述】:

我想将订单视图中商品块中的默认 SKU 属性(产品编号)更改为自定义属性。

见:

目前默认显示 SKU,我想将其更改为 DPN(我自定义创建的属性)。

这个属性代码是:dpn。

我怎样才能做到这一点?

我编辑文件:

/app/code/core/Mage/Adminhtml/Block/Sales/Items/Column/Default.php

来自默认代码:

public function getSku()
{
    /*if ($this->getItem()->getProductType() == Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE) {
        return $this->getItem()->getProductOptionByCode('simple_sku');
    }*/
    return $this->getItem()->getSku();
}

收件人:

public function getSku()
{
    /*if ($this->getItem()->getProductType() == Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE) {
        return $this->getItem()->getProductOptionByCode('simple_sku');
    }*/
    return $this->getItem()->getDpn();
}

但这不起作用。当我将值更改为 return $this->getItem()->getProductId(); 时,我会得到产品 ID,这样就可以了。

如何从属性中获取数据?

【问题讨论】:

    标签: php magento


    【解决方案1】:

    订单项 (sales/order_item) 与产品 (catalog/product) 不是同一个对象。相反,订单项更像是创建订单时产品的快照。

    这允许订单项目可访问(从客户订单历史记录页面或管理面板)并且即使在其相关产品已被删除或更改后也不会更改。

    Magento,首先通过添加到购物车的“快照”产品创建报价项目 (sales/quote_item)。最终 Quote 项目被转换为 Order 项目。

    为了完成您的任务,您需要创建新的 Quote item 属性,并将该属性转换为 Order item(可选,您可以进一步将其转换为 sales/invoice_itemsales/creditmemo_item)。

    要将属性形式 Quote 项转换为 Order 项,请阅读 Magento <fieldset> 配置元素。

    替代的,不太理想的解决方案:您可以使用您的订单商品来获取产品并在订单查看页面上使用产品的属性值:

    public function getSku()
    {
       return $this->getItem()->getProduct()->getDpn();
    }
    

    请记住,如果您更改产品的属性值,所有订单视图页面上的值也会更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-17
      • 2017-09-25
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多