如何在 magento 结帐时在运输方式中添加额外价格
How to add extra price in shipping method during checkout in magento
你好朋友,我想在结帐时以 magento 送货方式添加 10% 的运费:-
我遵循本教程,但它对我不起作用:-
http://www.blog.magepsycho.com/change-shipping-price-handling-fee-fly-magento/
我的代码在这里:-
Config.xml :-
<?xml version="1.0"?>
<config>
<modules>
<Ab_Extrashipcost>
<version>0.1.0</version>
</Ab_Extrashipcost>
</modules>
<global>
<models>
<extrashipcost>
<class>Ab_Extrashipcost_Model</class>
</extrashipcost>
</models>
<events>
<sales_quote_collect_totals_after>
<observers>
<ab_extrashipcost>
<type>singleton</type>
<class>extrashipcost/observer</class>
<method>salesQuoteCollectTotalsBefore</method>
</ab_extrashipcost>
</observers>
</sales_quote_collect_totals_after>
</events>
</global>
</config>
观察者文件:-
<?php
class Ab_Extrashipcost_Model_Observer
{
public function salesQuoteCollectTotalsBefore(Varien_Event_Observer $observer)
{
/** @var Mage_Sales_Model_Quote $quote */
$quote = $observer->getQuote();
$someConditions = true; //this can be any condition based on your requirements
$newHandlingFee = 15;
$store = Mage::app()->getStore($quote->getStoreId());
$carriers = Mage::getStoreConfig('carriers', $store);
foreach ($carriers as $carrierCode => $carrierConfig) {
if($carrierCode == 'flatrate_flatrate'){
if($someConditions){
Mage::log('Handling Fee(Before):' . $store->getConfig("carriers/{$carrierCode}/handling_fee"), null, 'shipping-price.log');
$store->setConfig("carriers/{$carrierCode}/handling_type", 'F'); #F - Fixed, P - Percentage
$store->setConfig("carriers/{$carrierCode}/handling_fee", $newHandlingFee);
###If you want to set the price instead of handling fee you can simply use as:
#$store->setConfig("carriers/{$carrierCode}/price", $newPrice);
Mage::log('Handling Fee(After):' . $store->getConfig("carriers/{$carrierCode}/handling_fee"), null, 'shipping-price.log');
}
}
}
}
}
?>
确保将模块配置文件放在 app/etc/modules 文件夹下。
您的 config.xml 代码应该是:-
<?xml version="1.0"?>
<config>
<modules>
<Ab_Extrashipcost>
<version>0.1.0</version>
</Ab_Extrashipcost>
</modules>
<global>
<models>
<extrashipcost>
<class>Ab_Extrashipcost_Model</class>
</extrashipcost>
</models>
</global>
<frontend>
<events>
<sales_quote_collect_totals_before>
<observers>
<ab_extrashipcost>
<type>singleton</type>
<class>extrashipcost/observer</class>
<method>salesQuoteCollectTotalsBefore</method>
</ab_extrashipcost>
</observers>
</sales_quote_collect_totals_before>
</events>
</frontend>
</config>
和Observer.php代码应该是:-
<?php
class Ab_Extrashipcost_Model_Observer
{
public function salesQuoteCollectTotalsBefore(Varien_Event_Observer $observer)
{
/** @var Mage_Sales_Model_Quote $quote */
$quote = $observer->getQuote();
$someConditions = true; //this can be any condition based on your requirements
$newHandlingFee = 15;
$store = Mage::app()->getStore($quote->getStoreId());
$carriers = Mage::getStoreConfig('carriers', $store);
foreach ($carriers as $carrierCode => $carrierConfig) {
if($carrierCode == 'flatrate'){
if($someConditions){
Mage::log('Handling Fee(Before):' . $store->getConfig("carriers/{$carrierCode}/handling_fee"), null, 'shipping-price.log');
$store->setConfig("carriers/{$carrierCode}/handling_type", 'F'); #F - Fixed, P - Percentage
$store->setConfig("carriers/{$carrierCode}/handling_fee", $newHandlingFee);
###If you want to set the price instead of handling fee you can simply use as:
#$store->setConfig("carriers/{$carrierCode}/price", $newPrice);
Mage::log('Handling Fee(After):' . $store->getConfig("carriers/{$carrierCode}/handling_fee"), null, 'shipping-price.log');
}
}
}
}
}
?>
你好朋友,我想在结帐时以 magento 送货方式添加 10% 的运费:- 我遵循本教程,但它对我不起作用:- http://www.blog.magepsycho.com/change-shipping-price-handling-fee-fly-magento/ 我的代码在这里:- Config.xml :-
<?xml version="1.0"?>
<config>
<modules>
<Ab_Extrashipcost>
<version>0.1.0</version>
</Ab_Extrashipcost>
</modules>
<global>
<models>
<extrashipcost>
<class>Ab_Extrashipcost_Model</class>
</extrashipcost>
</models>
<events>
<sales_quote_collect_totals_after>
<observers>
<ab_extrashipcost>
<type>singleton</type>
<class>extrashipcost/observer</class>
<method>salesQuoteCollectTotalsBefore</method>
</ab_extrashipcost>
</observers>
</sales_quote_collect_totals_after>
</events>
</global>
</config>
观察者文件:-
<?php
class Ab_Extrashipcost_Model_Observer
{
public function salesQuoteCollectTotalsBefore(Varien_Event_Observer $observer)
{
/** @var Mage_Sales_Model_Quote $quote */
$quote = $observer->getQuote();
$someConditions = true; //this can be any condition based on your requirements
$newHandlingFee = 15;
$store = Mage::app()->getStore($quote->getStoreId());
$carriers = Mage::getStoreConfig('carriers', $store);
foreach ($carriers as $carrierCode => $carrierConfig) {
if($carrierCode == 'flatrate_flatrate'){
if($someConditions){
Mage::log('Handling Fee(Before):' . $store->getConfig("carriers/{$carrierCode}/handling_fee"), null, 'shipping-price.log');
$store->setConfig("carriers/{$carrierCode}/handling_type", 'F'); #F - Fixed, P - Percentage
$store->setConfig("carriers/{$carrierCode}/handling_fee", $newHandlingFee);
###If you want to set the price instead of handling fee you can simply use as:
#$store->setConfig("carriers/{$carrierCode}/price", $newPrice);
Mage::log('Handling Fee(After):' . $store->getConfig("carriers/{$carrierCode}/handling_fee"), null, 'shipping-price.log');
}
}
}
}
}
?>
确保将模块配置文件放在 app/etc/modules 文件夹下。
您的 config.xml 代码应该是:-
<?xml version="1.0"?>
<config>
<modules>
<Ab_Extrashipcost>
<version>0.1.0</version>
</Ab_Extrashipcost>
</modules>
<global>
<models>
<extrashipcost>
<class>Ab_Extrashipcost_Model</class>
</extrashipcost>
</models>
</global>
<frontend>
<events>
<sales_quote_collect_totals_before>
<observers>
<ab_extrashipcost>
<type>singleton</type>
<class>extrashipcost/observer</class>
<method>salesQuoteCollectTotalsBefore</method>
</ab_extrashipcost>
</observers>
</sales_quote_collect_totals_before>
</events>
</frontend>
</config>
和Observer.php代码应该是:-
<?php
class Ab_Extrashipcost_Model_Observer
{
public function salesQuoteCollectTotalsBefore(Varien_Event_Observer $observer)
{
/** @var Mage_Sales_Model_Quote $quote */
$quote = $observer->getQuote();
$someConditions = true; //this can be any condition based on your requirements
$newHandlingFee = 15;
$store = Mage::app()->getStore($quote->getStoreId());
$carriers = Mage::getStoreConfig('carriers', $store);
foreach ($carriers as $carrierCode => $carrierConfig) {
if($carrierCode == 'flatrate'){
if($someConditions){
Mage::log('Handling Fee(Before):' . $store->getConfig("carriers/{$carrierCode}/handling_fee"), null, 'shipping-price.log');
$store->setConfig("carriers/{$carrierCode}/handling_type", 'F'); #F - Fixed, P - Percentage
$store->setConfig("carriers/{$carrierCode}/handling_fee", $newHandlingFee);
###If you want to set the price instead of handling fee you can simply use as:
#$store->setConfig("carriers/{$carrierCode}/price", $newPrice);
Mage::log('Handling Fee(After):' . $store->getConfig("carriers/{$carrierCode}/handling_fee"), null, 'shipping-price.log');
}
}
}
}
}
?>