5
4

2 回答 2

5

do you have any Checkout files modified on your project? Or maybe custom checkout. I will list the code locations you need to check to make sure your Shipping works correctly.

So to begin with: Magento has very special work process with Shipping rates - it's called "collectRates" and is some modification of pattern "composite".

To make sure that everything works correctly on the code basis you need to first check the Onepage.php model (app/code/core/Mage/Checkout/Model/Type/Onepage.php): lines 330, 341, 556, 616; There should be code

{address}->setCollectShippingRates(true)

where {address} is current address variable.

This code is significant for future "collectRates" processes, because just when the Onepage Checkout page is initializing the "collectRates" process has already been processed, and the flag "collect_shipping_rates" is set to "false". If it's not set back to true, the next "collectRates" process will not be performed.

After you check the location above, and it still doesn't work - you might want to add some logging to Mage_Checkout_Block_Onepage_Shipping_Method_Available::getShippingRates method. If method is properly executed and return some rates from $this->getAddress()->getGroupedAllShippingRates() call, there might be some issues with .phtml template on your locan theme (default path to .phtml is app/design/frontend/base/default/template/checkout/onepage/shipping_method/available.phtml).

Here's how you can log the outcome from $this->getAddress()->getGroupedAllShippingRates() call (Mage_Checkout_Block_Onepage_Shipping_Method_Available::getShippingRates method):

$groups = $this->getAddress()->getGroupedAllShippingRates();
$printGroupes = array();
    foreach ($groups as $code => $groupItems) {
        foreach ($groupItems as $item) {
            $printGroupes[$code][] = $item->getData();
        }
    }
Mage::log($printGroupes, null,'special.log');

Please note, that the result array with all rates will be logged into "special.log" under var/logs folder.

I wish I could be more of help, but the issue requires some digging into code, the debugger will be even more helpful than logging, if you can get hold of one.

Cheers!

于 2012-09-10T11:29:34.523 回答
1

Price should be entered for Flat Rate shipping to work

The problem might be of the country selection

Ship to applicable countries is set to "Specific Country" and you selected "Canada".

So you will see this shipping method only if you select Canada on the frontend during the checkout.

Or

You can make this to All Countries and check whether its working or not.

于 2012-09-05T18:30:14.790 回答