将搜索字段添加到Magento管理员

时间:2013-01-15 00:35:28

标签: php mysql magento-1.7 magento

有没有办法在“订单”下的Magento管理员中添加新的搜索字段?我想能够通过优惠券代码使用进行搜索(例如:使用优惠券代码搜索:“sale2013”​​,提供在结账时应用该优惠券代码的所有订单)。

enter image description here

我能够从Magento数据库中提取这些数据,但我真的想将此功能添加到Magento管理员,以便让同事和我的老板更容易。可以这样做,如果是的话,我可以从哪里开始思考?谢谢你们。

2 个答案:

答案 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>