Magento 将文本添加到签出页面的免费送货区

Magento 将文本添加到签出页面的免费送货区,magento,shipping,Magento,Shipping,如何在magento中自定义签出页面上的免费SHPP文本 我想在结帐页面添加一些文本来代替运费价格 默认情况下,发货价格为:-“Free$0.00”,我想将其更改为“Free$6.95-$6.95=$0.00” 问候,, Ravijot Kaur想到了两种解决方案: 1)您可以为所有产品添加一个属性,并硬编码每个产品的发货成本,然后将这些数字相加。在这种情况下,您只需找到所有要更改免费送货文本的模板,获取当前购物车中的所有商品(请参阅如何获取报价商品的答案),从中可以使用getProduct()

如何在magento中自定义签出页面上的免费SHPP文本

我想在结帐页面添加一些文本来代替运费价格

默认情况下,发货价格为:-“Free$0.00”,我想将其更改为“Free$6.95-$6.95=$0.00”

问候,,
Ravijot Kaur

想到了两种解决方案:

1)您可以为所有产品添加一个属性,并硬编码每个产品的发货成本,然后将这些数字相加。在这种情况下,您只需找到所有要更改免费送货文本的模板,获取当前购物车中的所有商品(请参阅如何获取报价商品的答案),从中可以使用getProduct()获取产品数据,加载属性,汇总,将价格格式化为您商店的区域设置并打印出来

例如:其中一个位置是
app/design/frontend/base/default/template/checkout/onepage/shipping\u method/available。phtml
您必须在那里放一个if语句,以便只更改为免费送货。在那里,您可以看到对$\u rate->getCode()的调用。如果该函数的输出与freeshipping_freeshipping匹配,则必须将文本附加到html

2)第二个更复杂的解决方案是,您选择另一种配送方式并从中获取金额(例如,您使用ups配送方式查看如果不使用免费配送将花费多少成本)。为此,您必须创建一个helper类并实现一个函数,该函数将shipping Address(类Mage\u Sales\u Model\u Quote\u Address)转换为请求(类Mage\u shipping\u Model\u Rate\u request)

您可以从qoute获取地址:

Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress();
根据该请求,您可以在您选择的承运人上调用collectRates功能(例如,Mage_Usa_Model_Shipping_carrier_Ups::collectRates)。您可以看到在Mage_Shipping_Model_Shipping::collectRates中调用所有承运人的示例,以及从Mage_Shipping_Model_Shipping::collectCarrierRates中调用的函数,该函数包含
$carrier->collectRates($request)-您必须对请求进行的函数调用

collectRates函数将返回一个结果类(Mage_Shipping_Model_Tracking_result)(使用var_dump($response->getData())或Mage::log($response->getData());查看结构),并从该类中获得承运人将产品交付至装运地址的价格

使用该数字,您可以执行与使用解决方案1相同的操作)(例如,请参见第一个解决方案底部的部分):

  • 将价格设置为商店的区域设置
  • 查找要进行更改的所有phtml文件
  • 检查装运方式是否为自由装运
  • 如果是免费送货,请添加您的文字
  • 编辑:

    将文本添加到每个模板文件的替代方法是在Mage_Shipping_Model_Carrier_Freeshipping类上使用重写,并将文本添加到
    $method->setMethodTitle($this->getConfigData('name'))设置器

    编辑2:

    或者更好的是,根据上述免费送货方式、文章和解决方案编写自己的送货方式。这样,您就不必使用重写或更改模板文件

    编辑3:


    我忘了提到,在上面的prepareRequest函数中,您还必须设置包裹数量和包裹重量(现在已经添加了它们)。这两个值被计算并添加到
    Mage\u Sales\u Model\u Quote\u address\u Total\u Shipping::collect

    中的地址中。如果有任何解决方案,请告诉我。
    Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress();