php - 向 Magento 管理添加搜索字段

标签 php mysql magento-1.7 magento

有没有办法在 Magento 管理中的“订单”下添加新的搜索字段?我希望能够按优惠券代码使用情况进行搜索(例如:按优惠券代码搜索:“sale2013”​​,得出在结账时应用该优惠券代码的所有订单)。

enter image description here

我能够从 Magento DB 中提取这些数据,但我真的很想将此功能添加到 Magento 管理中,以便让同事和老板更轻松地使用。可以做到吗?如果可以的话,我可以从哪里开始?谢谢大家。

最佳答案

当客户结帐时,结帐期间使用的优惠券代码将存储在主订单表 ( sales_flat_order ) 中。如果没有值(value),则没有使用优惠券代码。然而,管理中网格的数据来自sales_flat_order_grid table ;出于性能原因,它来自那里而不是主订单表,这在流量非常大的网站上变得尤其明显。

现在我们知道需要过滤的数据在哪里,以及网格的数据来自哪里,我们可以继续构建它!

您需要做的第一件事是添加 coupon_code列至sales_flat_order_grid表匹配 sales_flat_order 上列的定义 table 。 coupon_code 中的值sales_flat_order栏目应自动填充到 sales_flat_order_grid一旦匹配的列存在并且您的缓存存储已被刷新。

数据在订单保存时更新,因此具体来说,新订单和通过管理员更新的订单(甚至是对订单的评论)都会填充数据。对于现有订单,运行数据升级脚本来复制值。

数据/模式就位后,您将希望网格显示可过滤的列。为此,您需要重写 Mage_Adminhtml_Block_Sales_Order_Grid从您的自定义模块中删除类(请不要直接编辑核心文件,它稍后会困扰您)并覆盖 _prepareColumns方法与包含您的列定义的方法:

    $this->addColumn('coupon_code', array(
        'header' => Mage::helper('sales')->__('Coupon Code'),
        'index' => 'coupon_code',
    ));

如果您对 Magento 开发非常陌生,我敢说我才刚刚开始为您提供帮助。但是您将有大量的引用点来深入研究并构建您需要的功能。哈! :)

关于php - 向 Magento 管理添加搜索字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14329320/

相关文章:

function - Magento fatal error 无法重新声明函数主题Blanco

php - 如何在 PHP 中添加一个简单的验证?

php - 使用 PHP 打开 PTY 的最佳方式

mysql - 自动更改mysql中的类型

mysql - 如何修复此在 WHERE 条件中使用 IF 语句的查询?

php - Magento 目录搜索索引,无法初始化索引器进程

magento - 如何在 Magento Checkout Success.phtml 1.7 上提取客户电子邮件

php - 如何安全地将数据库连接变量传递到新页面?

PHP的变量类型宽大

mysql - ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id) 不增加 autoindex