`
yhz61010
  • 浏览: 558143 次
  • 来自: -
博客专栏
63c13ecc-ef01-31cf-984e-de461c7dfde8
libgdx 游戏开发
浏览量:12177
社区版块
存档分类
最新评论

[原创] Magento 下订单时进行其它 DB 操作(例如,修改商品指定的Custom Option)

阅读更多
  在 Magento 中,如果希望用户下订单时(也就是进行 Place Order 时),进行其它 DB 操作,下面是一种解决方案。不过需要注意的是,此种方案不是最好的方案,因为它直接修改了系统 core 下的文件,不便于系统升级,所以在实际使用时,需要特别留意这一点。

  测试时使用的 Magento 版本是 1.7.0.2。

  首先找到如下文件:
app\code\core\Mage\Sales\Model\Convert\Quote.php

  找到 itemToOrderItem 方法(Line 126),在这个方法里就可以进行其它 DB 操作了。例如,修改商品的 Custom Option:
    /*
    $product = Mage::getModel('catalog/product');
    $product->load($item->getProductId());

    $i = 1;
    foreach ($product->getOptions() as $o) {
        $values = $o->getValues();
            foreach ($values as $v) {
                $rand = 3;
                $v["sort_order"] = $rand;
                $v->setOption($o)->save();
            }
            $i++;
    }
    */

    // .....
    $options = $item->getProductOrderOptions();
    if (!$options) {
        $options = $item->getProduct()->getTypeInstance(true)->getOrderOptions($item->getProduct());
    }
    // ..... After above lines, you can do whatever you want
    // E.g, Modify selected custom option of current product
    $my_product = Mage::getModel('catalog/product');
    $my_product->load($item->getProductId());
    $my_options = $options["options"];

    $i = 1;
    foreach ($my_product->getOptions() as $o) {
        $values = $o->getValues();
            foreach ($values as $v) {
                foreach($my_options as $my_op){
                    if (strcasecmp($my_op['value'], $v["title"]) == 0){
                        $v["sort_order"] = 1;
                        $v->setOption($o)->save();
                    }
                }
            }
        $i++;
    }
    // .....

FYI:
http://stackoverflow.com/questions/5743456/how-does-magento-save-ordered-products-in-database
http://stackoverflow.com/questions/9785958/get-selected-custom-option-of-a-product-in-a-custom-page-magento
0
0
分享到:
评论

相关推荐

    magento下订单时客户留言插件

    本文将深入探讨"Magento下订单时客户留言插件"这一主题,以及"Magemaven_OrderComment-1.0.5"这个特定版本的插件。 首先,客户留言功能对于电子商务网站至关重要,因为它提供了与客户沟通的桥梁。例如,客户可能...

    magento 订单管理直接数据

    7. **批量操作**:对于大量订单,Magento提供了批量处理功能,如批量更改订单状态、打印发票或发货单,极大地提升了工作效率。 8. **报告**:Magento的订单管理还包括各种报告功能,例如销售报告、订单趋势分析等,...

    Magento订单导出导入

    导出订单通常是为了进行数据分析、备份或同步到其他系统。例如,你可以通过CSV或Excel格式导出订单,以便在其他报表工具中进一步处理这些数据。 要导出订单,需登录Magento管理面板,找到“销售”菜单,点击“订单...

    Magento删除订单插件

    "Magento删除订单插件"是针对这个系统设计的一款工具,旨在帮助运营人员更有效地管理后台的订单数据,尤其是针对测试订单或不需要保留的订单进行安全、便捷的删除。 在Magento系统中,订单数据是非常关键的一部分,...

    magento 后台订单显示图片插件

    然而,原生的Magento系统并未提供在后台订单详情页面直接查看商品图片的功能。"magento 后台订单显示图片插件"就是为了弥补这个不足而设计的。 该插件的主要功能是让商家在后台处理订单时,能直观地看到订单中的每...

    magento订单号的修改

    在实际操作中,修改Magento的订单号生成逻辑需要谨慎,因为这可能会影响到系统的稳定性和数据一致性。以下几点需特别注意: - **兼容性**:确保自定义代码与当前Magento版本和其他第三方模块的兼容性,避免出现冲突...

    magento订单号修改

    默认情况下,Magento的订单号是基于自增ID生成的,前缀通常是“ORDER_”或其他由系统设定的字符串。要修改这个设置,我们可以通过两种主要方法实现: 1. **修改配置设置**: 在Magento后台管理界面,你可以找到...

    magento删除订单sql

    在Magento系统中,有时可能需要清理或删除特定的订单数据,比如当测试环境中积累了大量无用的订单记录,或者在某些特殊情况下需要手动清除错误的订单等。本文将详细介绍如何通过编写SQL语句来实现这一操作,并确保...

    magento导出订单

    "magento导出订单"这一主题主要涉及到Magento系统如何导出订单数据,以便进行进一步的分析或整合到其他业务流程中,如物流发货系统。 在Magento中,订单数据通常是以CSV(Comma Separated Values)格式导出的,因为...

    最近订单下的产品 magento 插件

    7. **自动化工作流**:插件可能支持自动化操作,例如,当有新的最近订单时自动发送提醒,或者当某一产品连续出现在最近订单中时自动调整其在店铺的推广位置。 安装并配置这款插件后,商家可以更有效地处理订单,...

    magento前台显示最新订单下的产品信息及订单信息插件

    "Magento前台显示最新订单下的产品信息及订单信息插件"是针对该平台的一个扩展,旨在提升用户体验和店铺运营效率。通过安装这个插件,商家可以在网站前端展示最新的订单详情,包括所购买的产品信息和订单的相关状态...

    Magento批量处理订单

    在执行批量操作时,Magento遵循严格的权限控制。只有拥有相应权限的管理员才能进行这些操作,确保数据安全不被滥用。 7. **性能优化**: 批量处理订单需要考虑系统性能。如果订单数量巨大,建议分批处理,避免一...

    wp_custom_menu-1.2.5.rar_magento_magento custom menu

    安装"wp_custom_menu-1.2.5"压缩包时,通常需要解压后将文件上传到Magento的指定目录,然后通过Magento后台的扩展管理进行安装和激活。在使用过程中,商家应遵循Magento的最佳实践,确保所有更改都在安全的环境中...

    magento 后台操作手册

    Magento 后台操作手册涵盖了 Magento 后台的基本操作、产品上传、分类管理、产品价格设置、图片上传、库存管理、商店设置、货币设置、首页基本信息修改等多个方面的内容,旨在帮助用户更好地使用 Magento 电子商务...

    magento后台显示订单图片

    通过上述步骤,我们可以在Magento后台订单页面直接展示商品图片,极大地提升了后台操作人员的工作效率。同时,根据实际需求调整代码细节,还可以实现更多自定义功能,比如添加商品名称、价格等信息,使订单页面更加...

    magento插件-将订单号改为日期流水号

    这样的设置虽然方便内部管理,但在某些情况下可能会暴露商家的销售情况,例如客户可能通过订单号推断出商家的订单数量,这对于商业敏感信息来说是一大风险。 这款插件的主要功能就是将默认的订单号系统替换为包含...

    magento1.X 订单删除插件

    在这个目录下,我们可以找到与订单删除功能相关的类和方法,例如可能有一个专门的订单删除控制器,负责处理用户的删除请求;模型文件可能包含处理订单删除逻辑的函数;而助手类可能包含了用于验证权限、记录日志或与...

    magento导出数据sql

    4. **使用Magento的shell命令**:Magento提供了一系列的shell脚本,位于`app/code/core/Mage/Dataflow/Model/Convert/Adapter/Db/Sql/`目录下,可以用来生成SQL导出。通过命令行工具,你可以调用这些脚本,比如`...

    查询订单magento

    在电子商务领域,Magento是一款强大的开源电子商务平台,它提供了丰富的功能,包括订单管理、产品展示、购物车、支付处理等。本教程将详细讲解如何在Magento的前端查询订单以及相关知识点。 首先,我们要理解...

    zencart 数据迁移到magento 数据库操作

    在电子商务领域,商家可能会面临更换电商平台的情况,例如从ZenCart迁移到Magento。这两个都是流行的开源购物车系统,但Magento提供了更多的功能和扩展性。本文将详细介绍如何进行Zencart到Magento的数据迁移,尤其...

Global site tag (gtag.js) - Google Analytics