2

我有一个销售定制标志的公司的 Magento 网站。我设置了自定义选项,以便客户可以选择他们需要的材料和尺寸。我的问题是我需要能够根据所选材料和尺寸动态计算标牌的重量。我已经用 javascript 计算了权重,现在我正在尝试使用 checkout_product_add_after 事件将其传递给 Magento。

我设置了一个名为 Weight 的自定义选项,它是一个文本输入字段。我用 javascript 隐藏输入字段并传入计算的重量。我可以使用自定义模块访问重量并使用 setWeight() 方法设置重量,但是当我进行结帐时,重量没有更新,运费也没有改变。我已经尝试在报价项目和产品上设置权重,但都不起作用。

这是我的 Observer.php 文件中的代码:

<?php

class XM_CustomWeight_Model_Observer {

  public function set_custom_weight($observer) {

    $event = $observer->getEvent();
$product = $event->getProduct();
$options = $product->getCustomOptions();
    $last = end($options);
    $weight = $last->getValue();
$product->setWeight($weight);
$product->save();

  }
}

有没有人遇到过这个问题并找到了一个好的解决方案?谢谢你的帮助!

4

1 回答 1

0

看看@ Magento - 以编程方式保存的产品在后端不可见

我认为您可能需要将商店 ID 设置为管理员

Mage::app()->setCurrentStore(Mage::getModel('core/store')->load(Mage_Core_Model_App::ADMIN_STORE_ID));

您是否考虑过多个客户在几秒钟内购买同一商品的可能性,第一个人可能/将获得最后一个人的重量,或者如果客户在结帐时更改邮政编码并需要重新计算运费。

我认为您可以做的是创建一个自定义运输模块(通过扩展当前模块),然后为每个订单项添加自定义重量,并使用此 custom_weight 来帮助计算运输成本

看看@How to add custom fields for Order Line Items in magento

于 2013-05-06T15:33:09.257 回答