Предисловие
Создано из Magento приложение / код / ядро / Маг / Оформление заказа / Блокировка / Onepage / Доставка / Метод / 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 модели и возвращает его (вы можете получить каждый экземпляр модели, используя Mage :: getModel (); ).
Тем не менее, обратите внимание: можно содержать несколько rate_result_method экземпляров, в то время как код метода доставки одинаков для всех этих экземпляров!
Таким образом, чтобы получить описание, вам нужно получить один из rate_result_method экземпляров и получить его methodTitle или carrierTitle .
После небольшого исследования я нашел, как получить все эти тарифы:
Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress()->getShippingRatesCollection()
Это предоставит вам коллекцию всех тарифов для выбранного способа доставки.Вы можете управлять им с помощью getItems () и получить хеш.Или вы можете использовать getFirstItem () и использовать его в качестве шаблона.
В любом случае, давайте предположим, что вы получили какой-то элемент из этой коллекции и сохранили его в переменной $ 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**
Вот и все, ребята!
Мне очень жаль мой плохой английский и странный поток мыслей.Надеюсь, это поможет вам или кому-то еще.Спасибо!