Witam
chowaniecTez poszukiwalem takiego modulu i w sumie nie znalazlem, ale znalazlem sposob jak sobie z tym poradzic. Mozna to zrobic w swoim module (nadpisujac istniejacy blok) luub na sztywno zmienic w core module Magento.
Sa 2 sposoby:
1. Nadpisanie klasy modelu określonej metody platnosci.
2. Nadpisanie klasy bloku [katalog Magento]/app/code/core/Mage/Checkout/Block/Onepage/Payment/Methods.php.
Pokaze przyklad do sposobu 1.
Zalozmy ze chcialbys wyswietlic metode platnosci "Za pobraniem" (Cash on delivery) tylko wtedy gdy wybrano metode przesylki za pobraniem.
Modul platnosci CAshOnDelivery mozna pobrac z mgento connect uzywajac klucza:
magento-community/CashOnDelivery
Plik ktory musimy nadpisac znajduje sie w [katalog Magento]/app/code/community/Mage/CashOnDelivery/Model/CashOnDelivery.php
W tym pliku dopisujemy (nadpisujemy) nastepujaca metode:
public function isAvailable($quote=null)
{
$shipping = Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress()->getShippingMethod();
if (eregi("pobranie", $shipping)) {
return true;
}
return false;
}
,gdzie "pobranie" to nazwa wystepujaca w wybranej metodzie wysylki (moze sie ona odwolywac do wielu roznych metod za pobraniem, np. kurier za pobraniem, poczta za pobraniem itd. - pod warunkiem ze metody te uzywają wymienionej tu nazwy). Z pewnoscia ten sposob zadziala przy wykorzystaniu metod platnosci z Lento (sam testowalem). Mozna je pobrac kluczem:
magento-community/Lento_Wysylka
Moduly z lento (Opek, Masterlink, Poczta ...) sa proste, ale czesto wystarczajace.
Metoda, ktora pokazalem ma jeden minus. Okresla warunek wyswietlania tylko nadpisanego modulu platnosci. Jesli chcesz uzaleznic inne moduly, to rowniez nalezy pododawac w nich przedstawiona wyzej metode. Ewentualnie zastosowac sposob 2 i "pobawic" sie samemu z warunkiem "if (eregi(..." zeby obsluzyl wszystkie mozliwosci.
Mam nadzieje ze to cos pomoze.
Pozdrawiam