Добрый день!
Есть ли возможность получить методы доставки (названия и цены) без добавленных в корзину товаров? "По умолчанию" не даёт так сделать. А я хочу показывать на странице информацию вроде, "Доставка 1: от 100 рублей, доставка 2: от 200 рублей".
Можно, конечно, написать "положите в корзину и здесь отобразится цена", но это как то "не спортивно". Писать отдельный метод, который будет высчитывать доставку тоже не хочется, это придётся поддерживать в "двух" местах.
Кто-нибудь сталкивался с подобным?
Solved! Go to Solution.
В моем случае доставка зависит только от веса. Пункт назначения тоже есть. Модули доставки у меня считают ТК и почту России. Я кажется нашел вариант решения: http://stackoverflow.com/questions/11934138/magento-get-all-shipping-rates
// Change to your postcode / country. $zipcode = '2000'; $country = 'AU'; // Update the cart's quote. $cart = Mage::getSingleton('checkout/cart'); $address = $cart->getQuote()->getShippingAddress(); $address->setCountryId($country) ->setPostcode($zipcode) ->setCollectShippingrates(true); $cart->save(); // Find if our shipping has been included. $rates = $address->collectShippingRates() ->getGroupedAllShippingRates(); foreach ($rates as $carrier) { foreach ($carrier as $rate) { print_r($rate->getData()); } }
Доставка рассчитывается исходя из веса, габаритов товара, исходя из места отправки и места назначения. Согласитесь что Ваш сайт сам не сможет понять куда нужно отправлять товар без дополнительных вмешательств. Тут как раз нужен расширять функционал. С весом все понятно, геоданные можно брать по IP, а таблицу тарифов из тех мест куда обращаются модули доставки.
Встречались мне такие готовые модули, но они все работали с забугорными способами доставки.
Самое легкое это создать просто виджет и написать там "Доставка 1: от 100 рублей, доставка 2: от 200 рублей" без каких либо подсчетов.
В моем случае доставка зависит только от веса. Пункт назначения тоже есть. Модули доставки у меня считают ТК и почту России. Я кажется нашел вариант решения: http://stackoverflow.com/questions/11934138/magento-get-all-shipping-rates
// Change to your postcode / country. $zipcode = '2000'; $country = 'AU'; // Update the cart's quote. $cart = Mage::getSingleton('checkout/cart'); $address = $cart->getQuote()->getShippingAddress(); $address->setCountryId($country) ->setPostcode($zipcode) ->setCollectShippingrates(true); $cart->save(); // Find if our shipping has been included. $rates = $address->collectShippingRates() ->getGroupedAllShippingRates(); foreach ($rates as $carrier) { foreach ($carrier as $rate) { print_r($rate->getData()); } }