Jak dodać metody dostawy w Magento?

W przypadku, gdy zbiór dostępnych metod dostawy (shipping methods) w Magento jest niewystarczający i potrzebujemy dodania własnej metody, możemy to stosunkowo łatwo zrobić, tworząc własne rozszerzenie. Każda nowa metoda dostawy może być implementowana zarówno jako odrębny moduł, jak i jeden moduł z dowolną liczbą metod. Dla przykładu dodajmy usługę konsjerża jako nowy sposób dostawy.

Implementację należy oczywiście zacząć od stworzenia własnego rozszerzenia (ten krok jest tutaj pominięty – zakładam znajomość tworzenia rozszerzeń Magento przez czytającego). Nasz moduł nazwiemy NewShippingMethods i zdefiniujemy w nim concierge jako nową metodę dostawy. W pliku config.xml potrzebna nam będzie m.in. definicja modelu:

Następnie tworzymy plik Model/Carrier/Concierge.php. Utworzona w nim klasa musi:

– dziedziczyć po klasie abstracyjnej Mage_Shipping_Model_Carrier_Abstract

– implementować interfejs Mage_Shipping_Model_Carrier_Interface

 

Dodajemy kod (identyfikator) metody – może zawierać tylko litery a-z, cyfry 0-9 i znak podkreślenia _:

Teraz implementacja najważniejszej metody – collectRates(). Założymy tutaj dla uproszczenia, że usługa jest darmowa (oczywiście można zaimplementować dowolną logikę obliczania kosztu):

Należy sprawdzić czy metoda jest aktywna (oczywiście należy taką opcję dodać w plikach config.xml i system.xml).

Pobieramy dwa obiekty – pierwszy będzie zwrócony przez naszą metodę, drugi – zawierać będzie szczegółowe dane o sposobie dostawy:

Ustawiamy kod, nagłówek i nazwę:

Ustawiamy cenę i koszt:

Dodajemy naszą metodę do kolekcji i zwracamy:

Należy jeszcze zaimplementować metodę getAllowedMethods(), która zwróci tablicę z dostępnymi metodami:

Do pełni funkcjonalności konieczne jest oczywiście dodanie opcji konfiguracyjnych metody dostawy w plikach config.xml i system.xml.

Powodzenia! : )

 

pluswerk