在 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
分享到:
相关推荐
magento下订单时客户留言插件,magento留言插件
用于magento后台订单的操作与删除,将一些测试订单或者不必要订单删除,方便运营人员管理。
magento 后台订单显示图片插件,可以让magento 后台订单显示图片,直接覆盖原文件即可!
对magento后台订单的导出和导入,节省运营时间,方便管理
magento删除订单sql,通过phpmyadmin清空订单
magento订单号修改 前缀 后缀 数字
magento 插件 最近订单下的产品 很好用的哦
magento自定义导出订单.csv文件,修改非常简单,方便整理csv文件,导入到发货系统
订单号的自由修改$lastArg ="lvx";
magento后台显示订单图片,便于浏览订单
magento前台显示最新订单下的产品信息及订单信息插件,详细信息察看:http://blog.sina.com.cn/s/blog_6a1323780100qzip.html
再也不用点击到订单详细页了 订单管理界面直接可以看到所有数据
magento批量处理订单的发货,关闭,填写物流单号等状态
查询订单 magento前台查询订单,方便用户前台查看订单详细内容
magento custom menu 可以自己定制的导航菜单
Magento下订单导出 下订单时,此扩展名用于导出订单详细信息。 以文本和CSV格式导出下订单明细。
magento用户中文操作手册,学习magento后台管理
Magento的sales模块算是模块里面关联度比较大的,checkout模块的下订单流程也写得让人一头雾水,附件里主要是用客户对象和产品sku+数量的数组生成订单的函数,内容不多,但是可是找了不少时间,希望能帮到正在攻克...
如果使用MAGENTO默认后台生成的订单号,客户一看你做了多单一目了然,你肯定不 能让客户知道你做了多少单吧.这个插件可以帮你把日期+流水号做为订单号,再也不用为泄露商业机密发愁了吧.
这是我接触magento不久后自己写的一段代码,可以使用,但是有些地方需要优化和修改的请根据实际情况修改,另外这是提示性代码,请先理解代码思路最好是自己尝试着去写