Magento更改订单产品行内的属性

时间:2016-08-10 11:21:17

标签: php magento

我想将orderview中的默认SKU属性(产品编号)更改为自定义属性。

请参阅:

enter image description here

目前默认显示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,这样就可以了。

如何从属性中获取数据?

1 个答案:

答案 0 :(得分:0)

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

这样即使在相关产品被删除或更改后,也可以访问订单商品(来自客户订单历史记录页面或管理面板)并保持不变。

Magento,首先通过快照创建引用项目(sales/quote_item)'产品已添加到购物车。最终报价项目转换为订单项目。

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

要将属性表单引用项目转换为订单项,请阅读有关Magento <fieldset>配置元素的信息。

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

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

请注意,如果您更改产品的属性值,则所有订单查看页面上的值也会更改。