Ответ 1
Предисловие
Построено из Magento app/code/core/Mage/Checkout/Block/Onepage/Shipping/Method/Available.php и другие:
app/design/frontend/base/default/template/checkout/onepage/shipping_method/available.phtml использует этот код для определения способа доставки:
$this->getAddressShippingMethod()
app/code/core/Mage/Checkout/Block/Onepage/Shipping/Method/Available.php расширяет этот код:
return $this->getAddress()->getShippingMethod();
Пусть исследование немного и расширит его еще глубже:
$this->getQuote()->getShippingAddress()->getShippingMethod();
Родительский блок расширяет метод getQuote():
return $this->getCheckout()->getQuote();
И глубже:
public function getChechout() {
return Mage::getSingleton('checkout/session');
}
Слияние всего этого кода дает нам следующее:
Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress()->getShippingMethod()
Это дает вам код метода доставки. Предоставляя это, вы можете манипулировать им так, как хотите. Эти данные хранятся в базе данных, поэтому при изменении способа доставки код также изменяется.
Как глубже и глубже!
Если вы когда-либо создали свой собственный метод доставки, вы бы знали, что у него есть метод, называемый collectRates().
Он заполняет набор моделей shipping/rate_result_method, сохраняет его в экземпляре модели shipping/rate_result и возвращает его (вы можете получить экземпляр каждой модели с помощью Мага:: getModel (< модель я названа > );).
Тем не менее, обратите внимание: можно было бы содержать несколько экземпляров rate_result_method, тогда как код метода доставки одинаковый для всех этих экземпляров!
Таким образом, чтобы получить описание, вам нужно получить один из экземпляров rate_result_method и получить его методTitle или carrierTitle.
После небольшого исследования я узнал, как получить все эти ставки:
Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress()->getShippingRatesCollection()
Это предоставит вам набор всех ставок для выбранного метода доставки. Вы можете управлять им с помощью getItems() и получить хэш. Или вы можете использовать getFirstItem() и использовать его в качестве шаблона.
В любом случае, предположим, что u've получил некоторый элемент этой коллекции и сохранил его в переменной $rate:
$rate->getCarrier(); // This will provide you with the carrier code
$rate->getCarrierTitle(); // This will give you the carrier title
$rate->getCode(); // This will give you **current shipping method** code
$rate->getMethod(); // This will provide you with the **shipping method** code
$rate->getMethodTitle(); // This will tell you current shipping method title
$rate->getMethodDescription(); // And this is the description of the current shipping method and **it could be NULL**
Что все, люди!
Мне очень жаль моего бедного английского и моего странного потока сознания. Надеюсь, это поможет вам или кому-то еще. Спасибо!