2013-04-12 4 views
0

Как отрегулировать бесплатный текст shpping на странице проверки в magento.Добавить текст в блок свободной доставки на странице оформления заказа

Я хотел бы добавить текст вместо цены доставки на странице оформления.

По умолчанию цена доставки: «Бесплатно 0,00», я бы хотел изменить его на «Бесплатно $ 6.95 - $ 6.95 = $ 0.00».

С уважением, Ravijot Каур

+0

Пожалуйста, дайте мне знать, если есть какое-либо разрешение. – user2273857

ответ

1

Два решения приходят на ум:

1) Вы можете добавить атрибут ко всем продуктам и жесткий код, сколько вы ожидаете на доставку каждого продукта стоимости а затем просто подытожим эти цифры. В этом случае вы просто найдете все шаблоны, в которые вы хотели бы изменить текст бесплатной доставки, получить все предметы, которые в настоящее время находятся в корзине (см. this ответ на вопрос, как вы можете получить цитаты), из них вы можете получить продукт данные с getProduct(), загрузите свой атрибут, суммируйте их, отформатируйте цену в локали вашего магазина и распечатайте ее.

Например: В одном таком месте app/design/frontend/base/default/template/checkout/onepage/shipping_method/available.phtml вам нужно будет поставить инструкцию if, чтобы вы могли внести изменения только в бесплатную доставку. Там вы можете увидеть вызов $ _rate-> getCode(). Если выход этой функции соответствует freeshipping_freeshipping, тогда вы должны прикрепить свой текст к html.

2) Второе и немного более сложное решение заключается в том, что вы выбираете другой способ доставки и получаете сумму от него (например, вы используете метод доставки отгрузки, чтобы увидеть, сколько это будет стоить, если бесплатная доставка не будет использоваться). Для этого вам придется создать вспомогательный класс и реализовать функцию, которая преобразует доставки adderess (класс Mage_Sales_Model_Quote_Address) для запроса (класс Mage_Shipping_Model_Rate_Request)

public function prepareRequest(Mage_Sales_Model_Quote_Address $address) 
{ 
    $request = Mage::getModel('shipping/rate_request') 
     ->setAllItems($address->getAllItems()) 
     ->setDestCountryId($address->getCountryId()) 
     ->setDestRegionId($address->getRegionId()) 
     ->setDestPostcode($address->getPostcode()) 
     ->setPackageValue($address->getBaseSubtotal()) 
     ->setPackageValueWithDiscount($address->getBaseSubtotalWithDiscount()) 
     ->setStoreId(Mage::app()->getStore()->getId()) 
     ->setWebsiteId(Mage::app()->getStore()->getWebsiteId()) 
     ->setBaseCurrency(Mage::app()->getStore()->getBaseCurrency()) 
     ->setPackageCurrency(Mage::app()->getStore()->getCurrentCurrency()) 
     ->setPackageQty($address->getItemQty()) 
     ->setPackageWeight($address->getWeight()); 

    return $request; 
} 

Вы можете получить адрес от qoute:

Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress(); 

С помощью этого запроса вы вызываете функцию collectRates на перевозчике по вашему выбору (например, Mage_Usa_Model_Shipping_Carrier_Ups :: collectRates). Вы можете увидеть пример вызова всех операторов в Mage_Shipping_Model_Shipping :: collectRates и функцию, которая вызывается из ther Mage_Shipping_Model_Shipping :: collectCarrierRates, которая содержит $carrier->collectRates($request); - вызов функции, который вам нужно будет сделать с вашим запросом.

Функция collectRates возвращает класс результата (Mage_Shipping_Model_Tracking_Result) (используйте var_dump ($ response-> getData()) или Mage :: log ($ response-> getData()), чтобы увидеть структуру) и из этого класса вы получите цену, которую перевозчик будет взимать за доставку продуктов на адрес доставки.

С этим номером вы затем сделать то же самое, как если бы вы использовали бы решение 1) (смотри, например, часть в нижней части первого раствора):

  1. цена формат локали вашего магазина
  2. найти все файлы PHTML, где вы хотите, чтобы сделать изменения
  3. проверить, если метод перевозкы груза freeshipping_freeshipping
  4. если это бесплатная доставка затем добавить свой текст

EDIT:

Альтернатива добавления текста к каждому файлу шаблона будет использовать переписанный на классе Mage_Shipping_Model_Carrier_Freeshipping и добавить свой текст $method->setMethodTitle($this->getConfigData('name')); сеттера.

EDIT 2:

Или еще лучше написать свой собственный способ доставки на основе свободного способа доставки, this статьи и выше решения. Таким образом вам не придется использовать файлы перезаписи или изменения шаблонов.

Edit 3:

Я забыл упомянуть, что в приведенной выше функции prepareRequest вы также должны установить package_qty и package_weight (добавили их сейчас). Эти два значения рассчитываются и добавляются к адресу в Mage_Sales_Model_Quote_Address_Total_Shipping::collect.

Смежные вопросы