Jaki moduł PrestaShop dostawa & płatność

,

Silnik sklepu PrestaShop wydaje się być bardzo rozbudowany, nie posiada jednak tak ważnej rzeczy jak powiązanie metody dostawy z metodą płatności. Jak klient wybiera dostawę za pobraniem, to powinien mieć tylko opcję płacę przy odbiorze. Jak wybrał zwykłą przesyłkę kurierską, to nie powinien zobaczyć opcji płacę przy odbiorze. Można by wymieniać wiele kombinacji wszystko zależy od nas i naszych możliwości.

W poszukiwaniu modułu realizującego, wydaje się tak prostą funkcjonalność przetestowałam kolejno moduły do PrestaShop 1.6.1:

Moduł Pcpayments2carriersfree

Moduł zainstalował się i na początku wszystko wskazywało, że jest ok. Niestety zmiany nie były widoczne dziś już wiem dlaczego.

Moduł Ship2pay-ps16-master

Moduł się nie instalował. Po skróceniu nazwy do ship2pay, zgodnie z danymi w plikach (co w przypadku modułów jest istotne) moduł dalej się nie instalował. Nie pozostało nic innego jak dokładne przeglądniecie kodu i wprowadzenie potrzebnych zmian i udało się. Moduł działa poprawnie, wiąże metody dostawy z wybraną metodą płatności.

Moduły Shiptopay_PS1.5 oraz Payments2carriers

Moduły te są dla starszych wersji i do wersji PrestaShop 1.6 ich nie polecam. Choć moduły Shiptopay i Payments2carriers się zainstalowały  i funkcjonalność każdego modułu z osobna działa, to niestety strona sklepu po zastosowaniu tych modułów jest rozsypana.

 

Haki sklepu PrestaShop

,

prestashop sklepModuły sklepu PrestaShop umieszczamy na stronie przy pomocy funkcji registerHook() i tak zwanych haków.

Sklep PrestaShop został wyposażony w haki, które pozwalają na łatwe rozmieszczanie modułów i umożliwiają zmianę pozycji.

Aby nowy moduł sklepu był widoczny, musimy wywołać funkcję registerHook() oraz podać nazwę haka jako parametr funkcji.

Podczepienie modułu wykonujemy w metodzie install()

Przykład podłączenia modułu do strony głównej za pomocą $this->registerHook('displayHome')

public function install() {
    parent::install();
    if(!$this->registerHook('displayHome')) return false;
    return true;
}

 

Haki PrestaShop

Nazwa Opis
actionAdminMetaControllerUpdate_optionsBefore
actionAdminMetaSave Po zapisaniu konfiguracji w AdminMeta
actionAuthentication Przy uwierzytelnianiu
actionBeforeAuthentication Przed uwierzytelnieniem
actionCartSave Zapisywanie zawartości kosza
actionCustomerAccountAdd Wywoływane, gdy nowy klient pomyślnie utworzy konto
actionHtaccessCreate Po utworzeniu .htaccess
actionObjectCategoryDeleteAfter
actionObjectCategoryUpdateAfter
actionObjectCmsDeleteAfter
actionObjectCmsUpdateAfter
actionObjectManufacturerDeleteAfter
actionObjectManufacturerUpdateAfter
actionObjectProductDeleteAfter
actionObjectProductUpdateAfter
actionObjectSupplierDeleteAfter
actionObjectSupplierUpdateAfter
actionOrderDetail Aby ustawić szczegóły zamówień.
actionOrderReturn Zwracanie zawartości zamówienia
actionOrderSlipAdd Wywoływane, gdy dodamy produkt do zamówienia.
actionOrderStatusPostUpdate
actionOrderStatusUpdate Uruchamianie modułu, gdy zmienia się status zamówienia.
actionPaymentCCAdd Dodanie płatności
actionPaymentConfirmation
actionSearch Wyszukiwarka
actionShopDataDuplication
actionTaxManager
actionUpdateQuantity Aktualizowanie ilości zamówienia.
actionValidateOrder
actionWatermark
displayAdminCustomers Uruchamianie modułów na karcie AdminCustomers
displayAdminOrder Uruchamianie modułów na karcie AdminOrder.
displayAdminStatsGraphEngine
displayAdminStatsGridEngine
displayAdminStatsModules
displayBackOfficeFooter
displayBackOfficeHeader
displayBackOfficeHome
displayBackOfficeTop
displayBeforeCarrier Lista przewoźników
displayBeforePayment Przekierowanie użytkownika do modułu zamiast wyświetlanie modułu płatności
displayCarrierList
displayCustomerAccount Wyświetlanie na stronie konta klienta
displayCustomerAccountForm Wstawia informacje w formularzu utworzenia konta klienta
displayCustomerAccountFormTop Wstawia informacje w górze formularza utworzenia konta klienta
displayFooter Dodaj blok w stopce strony
displayFooterProduct Dodawanie nowych bloków w opisie produktu
displayHeader Dodaj blok w nagłówku strony
displayHome Strona główna
displayInvoice Dodaj blok do zamówienia
displayLeftColumn Lewa kolumna strony sklepu
displayLeftColumnProduct Lewa kolumna strony produktu
displayMyAccountBlock Wyświetlanie dodatkowych informacji w bloku moje konto
displayMyAccountBlockfooter Wyświetlanie dodatkowych informacji w stopce bloku moje konto
displayOrderConfirmation Strona potwierdzenie zamówienia
displayOrderDetail Szczegóły zamówień
displayPayment Płatności
displayPaymentReturn Informacja po wykonaniu płatności
displayPaymentTop Wyświetlanie dodatkowych informacji w górze strony płatności
displayPDFInvoice Umożliwia wyświetlanie dodatkowych informacji do faktur PDF
displayProductButtons Umieścić nowe przyciski – odnośniki na stronie produktu
displayProductComparison Porównanie produktów
displayProductTab Tabela produktów
displayProductTabContent Na zamówienie karty produktu
displayRightColumn Prawa kolumna strony sklepu
displayRightColumnProduct Prawa kolumna strony produktu
displayShoppingCart Wyświetlanie specyficznych informacji w koszyku
displayShoppingCartFooter Wyświetlanie specyficznych informacji na stronie koszyka
displayTop Wyświetlanie informacji w górnej części każdej strony.

Tworzymy moduł sklepu PrestaShop

,

prestashop sklep

Struktura plików modułu

Moduł sklepu PrestaShop składa się z wielu plików, które są przechowywane w folderze o nazwie takiej samej jak moduł. Cały folder modułu jest przechowywany w katalogu /modules

Główny plik modułu nazwa_modułu.php musi zaczynać się od kodu: <?php if(!defined('_PS_VERSION_')) exit;

który zabezpiecza możliwość załadowania pliku bezpośrednio.

Należy zauważyć, że zgodnie z wymogami PrestaShop Coding Standards, nie używamy znacznika zamykającego PHP.

Główna klasa modułu

PrestaShop używa programowania obiektowego, to znaczy kod sklepu budowany jest na obiektach. Obiekt w PHP jak i innych językach programowania definiuje się przez słówko class.

Główna klasa modułu musi posiadać taką samą nazwę jak moduł i folder.

class nazwa_modułu extends Module
{
}

Nasza klasa musi być rozszerzeniem klasy Module. Aby wykonać tak zwane dziedziczenie, po nazwie klasy dopisujemy słowo kluczowe extends czyli mamy extends Module

Konstruktor modułu

Konstruktor to funkcja w klasie, która jest automatycznie wykonywana przy tworzeniu nowego obiektu tej klasy.

 public function __construct()
  {
    $this->name = 'nazwa_modułu';
    $this->tab = 'front_office_features';
    $this->version = '1.0.0';
    $this->author = 'autor';
    $this->need_instance = 0;
    $this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_); 
    $this->bootstrap = true;
 
    parent::__construct();
 
    $this->displayName = $this->l('Nazwa modułu');
    $this->description = $this->l('Opis modułu.');
 
    $this->confirmUninstall = $this->l('Jesteś pewien, że chcesz odinstalować moduł?');
 
    if (!Configuration::get('nazwa_modułu_nazwa'))      
      $this->warning = $this->l('Nie podano nazwy');
  }

Moduł sklepu PrestaShop – jest to tylko minimum jakie musimy mieć aby zainstalować moduł.

Tabela dostępnych opcji dla atrybutu tab i ich odpowiednia sekcja na liście modułów.

atrybut tab sekcja modułu
administration Administracja
advertising_marketing Marketing i Reklama
analytics_stats Analityka i Statystyka
billing_invoicing Podatki i Fakturowanie
checkout Kontrola
content_management Zarządzanie zawartością
dashboard Pulpit
emailing Wysyłanie e-maili i SMS
export Eksport
front_office_features Funkcjonalność sklepu
i18n_localization Lokalizacja
market_place Rynek
merchandizing Marketing
migration_tools Narzędzia migracji
mobile Mobilne
others Pozostałe moduły
payments_gateways Płatności i bramy, operatorzy
payment_security Bezpieczeństwo płatności
pricing_promotion Ceny i Promocje
quick_bulk_update Zbiorcze aktualizacje
search_filter Wyszukiwanie i filtrowanie
seo Optymalizacja SEO
shipping_logistics Wysyłka i logistyka
slideshows Pokazy slajdów
smart_shopping Inteligentne zakupy
social_networks Sieci społecznościowe