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
actionAdminMetaSavePo zapisaniu konfiguracji w AdminMeta
actionAuthenticationPrzy uwierzytelnianiu
actionBeforeAuthenticationPrzed uwierzytelnieniem
actionCartSaveZapisywanie zawartości kosza
actionCustomerAccountAddWywoływane, gdy nowy klient pomyślnie utworzy konto
actionHtaccessCreatePo utworzeniu .htaccess
actionObjectCategoryDeleteAfter
actionObjectCategoryUpdateAfter
actionObjectCmsDeleteAfter
actionObjectCmsUpdateAfter
actionObjectManufacturerDeleteAfter
actionObjectManufacturerUpdateAfter
actionObjectProductDeleteAfter
actionObjectProductUpdateAfter
actionObjectSupplierDeleteAfter
actionObjectSupplierUpdateAfter
actionOrderDetailAby ustawić szczegóły zamówień.
actionOrderReturnZwracanie zawartości zamówienia
actionOrderSlipAddWywoływane, gdy dodamy produkt do zamówienia.
actionOrderStatusPostUpdate
actionOrderStatusUpdateUruchamianie modułu, gdy zmienia się status zamówienia.
actionPaymentCCAddDodanie płatności
actionPaymentConfirmation
actionSearchWyszukiwarka
actionShopDataDuplication
actionTaxManager
actionUpdateQuantityAktualizowanie ilości zamówienia.
actionValidateOrder
actionWatermark
displayAdminCustomersUruchamianie modułów na karcie AdminCustomers
displayAdminOrderUruchamianie modułów na karcie AdminOrder.
displayAdminStatsGraphEngine
displayAdminStatsGridEngine
displayAdminStatsModules
displayBackOfficeFooter
displayBackOfficeHeader
displayBackOfficeHome
displayBackOfficeTop
displayBeforeCarrierLista przewoźników
displayBeforePaymentPrzekierowanie użytkownika do modułu zamiast wyświetlanie modułu płatności
displayCarrierList
displayCustomerAccountWyświetlanie na stronie konta klienta
displayCustomerAccountFormWstawia informacje w formularzu utworzenia konta klienta
displayCustomerAccountFormTopWstawia informacje w górze formularza utworzenia konta klienta
displayFooterDodaj blok w stopce strony
displayFooterProductDodawanie nowych bloków w opisie produktu
displayHeaderDodaj blok w nagłówku strony
displayHomeStrona główna
displayInvoiceDodaj blok do zamówienia
displayLeftColumnLewa kolumna strony sklepu
displayLeftColumnProductLewa kolumna strony produktu
displayMyAccountBlockWyświetlanie dodatkowych informacji w bloku moje konto
displayMyAccountBlockfooterWyświetlanie dodatkowych informacji w stopce bloku moje konto
displayOrderConfirmationStrona potwierdzenie zamówienia
displayOrderDetailSzczegóły zamówień
displayPaymentPłatności
displayPaymentReturnInformacja po wykonaniu płatności
displayPaymentTopWyświetlanie dodatkowych informacji w górze strony płatności
displayPDFInvoiceUmożliwia wyświetlanie dodatkowych informacji do faktur PDF
displayProductButtonsUmieścić nowe przyciski – odnośniki na stronie produktu
displayProductComparisonPorównanie produktów
displayProductTabTabela produktów
displayProductTabContentNa zamówienie karty produktu
displayRightColumnPrawa kolumna strony sklepu
displayRightColumnProductPrawa kolumna strony produktu
displayShoppingCartWyświetlanie specyficznych informacji w koszyku
displayShoppingCartFooterWyświetlanie specyficznych informacji na stronie koszyka
displayTopWyś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 tabsekcja modułu
administrationAdministracja
advertising_marketingMarketing i Reklama
analytics_statsAnalityka i Statystyka
billing_invoicingPodatki i Fakturowanie
checkoutKontrola
content_managementZarządzanie zawartością
dashboardPulpit
emailingWysyłanie e-maili i SMS
exportEksport
front_office_featuresFunkcjonalność sklepu
i18n_localizationLokalizacja
market_placeRynek
merchandizingMarketing
migration_toolsNarzędzia migracji
mobileMobilne
othersPozostałe moduły
payments_gatewaysPłatności i bramy, operatorzy
payment_securityBezpieczeństwo płatności
pricing_promotion Ceny i Promocje
quick_bulk_updateZbiorcze aktualizacje
search_filterWyszukiwanie i filtrowanie
seoOptymalizacja SEO
shipping_logisticsWysyłka i logistyka
slideshowsPokazy slajdów
smart_shoppingInteligentne zakupy
social_networksSieci społecznościowe