1. 云栖社区>
  2. PHP教程>
  3. 正文

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

作者:用户 来源:互联网 时间:2017-12-01 12:45:35

订单修改option操作magento商品指定进行例如

[原创] Magento 下订单时进行其它 DB 操作(例如,修改商品指定的Custom Option) - 摘要: 本文讲的是[原创] Magento 下订单时进行其它 DB 操作(例如,修改商品指定的Custom Option),   在 Magento 中,如果希望用户下订单时(也就是进行 Place Order 时),进行其它 DB 操作,下面是一种解决方案。不过需要注意的是,此种方案不是最好的方案,因为它直接修改了系统 core 下的文件,不便于系统升级,所以


  在 Magento 中,如果希望用户下订单时(也就是进行 Place Order 时),进行其它 DB 操作,下面是一种解决方案。不过需要注意的是,此种方案不是最好的方案,因为它直接修改了系统 core 下的文件,不便于系统升级,所以在实际使用时,需要特别留意这一点。
  测试时使用的 Magento 版本是 1.7.0.2。
  首先找到如下文件:
appcodecoreMageSalesModelConvertQuote.php
  找到 itemToOrderItem 方法(Line 126),在这个方法里就可以进行其它 DB 操作了。例如,修改商品的 Custom Option:


// .....
$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 下订单时进行其它 DB 操作(例如,修改商品指定的Custom Option)的全部内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有其他相关内容,欢迎继续使用右上角搜索按钮进行搜索订单 , 修改 , option , 操作 , magento , 商品 , 指定 , 进行 , 例如 ,以便于您获取更多的相关知识。