有没有办法在“订单”下的Magento管理员中添加新的搜索字段?我想能够通过优惠券代码使用进行搜索(例如:使用优惠券代码搜索:“sale2013”,提供在结账时应用该优惠券代码的所有订单)。
我能够从Magento数据库中提取这些数据,但我真的想将此功能添加到Magento管理员,以便让同事和我的老板更容易。可以这样做,如果是的话,我可以从哪里开始思考?谢谢你们。
答案 0 :(得分:1)
结账时使用的优惠券代码在客户结账时存储在主订单表(sales_flat_order
)上。如果没有价值,则不使用优惠券代码。但是,管理员中网格的数据来自sales_flat_order_grid
表;它来自那里而不是主要订单表,因为性能原因在非常高的流量网站上变得特别明显。
现在我们知道您需要过滤数据的位置,以及网格数据的来源,我们可以继续构建它!
您需要做的第一件事是在coupon_code
表中添加sales_flat_order_grid
列,该表与sales_flat_order
表中列的定义相匹配。 {| 1}} coupon_code
列中的值应在匹配列出现后自动填充到sales_flat_order
,并且您的缓存存储已被刷新。
数据在订单保存时更新,因此具体而言,通过管理员更新的新订单和订单(甚至是订单注释)将填充数据。对于现有订单,请运行数据升级脚本以复制值。
在数据/模式到位后,您将希望网格显示一个可过滤的列。为此,您需要从自定义模块重写sales_flat_order_grid
类(请不要直接编辑核心文件,以后会困扰您)并使用包含列的方法覆盖Mage_Adminhtml_Block_Sales_Order_Grid
方法定义:
_prepareColumns
如果你对Magento开发非常新鲜,我会冒昧地说我只是开始帮助你。但是你会有很多参考点可以从中挖掘并构建你需要的功能。 HTH! :)
答案 1 :(得分:0)
使用此扩展程序可以轻松地向网格添加新列: https://github.com/magento-hackathon/GridControl
添加此扩展程序,在etc目录中使用gridcontrol.xml
编写自己的扩展程序
然后这样的事情应该有效:
<?xml version="1.0"?>
<gridcontrol>
<grids>
<order.grid>
<coupon_code>
<after>columnname</after>
<add>
<header>Coupon code</header>
<type>text</type>
<index>coupon_code</index>
<joinField>coupon_code|sales/order|coupon_code|entity_id=entity_id||left</joinField>
</add>
</coupon_code>
</order.grid>
</grids>
</gridcontrol>