Zacznijmy od utworzenia nowego folderu w /modules. Nazwijmy go mojmodul.
Nowo utworzony folder musi zawierać plik PHP o tej samej nazwie co folder: mojmodul.php
Główny plik modułu mojmodul.php powinien zaczynać się następującym testem:
<?php
if (!defined('_PS_VERSION_')) {
exit;
}
Warunek sprawdza obecność stałej PrestaShop _PS_VERSION_ (jej numer wersji), a jeśli ta nie istnieje, zatrzymuje ładowanie dalszej części kodu. Celem takiego działania jest uniemożliwienie złośliwym odwiedzającym wczytanie tego pliku bezpośrednio, np. poprzez wywołanie go przez podanie pełnej ścieżki do pliku.
Główna klasa
W głównym pliku tworzymy klasę o tej samej nazwie co moduł (oraz jego folder). Klasa (nazwy klas tworzymy w notacji camelCase lub też PascalCase) MojModul powinna rozszerzać inną klasę Module aby odziedziczyć wszystkie jej metody i atrybuty.
<?php
if (!defined('_PS_VERSION_')) {
exit;
}
class MojModul extends Module
{
//zawartosc
}
Na tym etapie nasz moduł jest już widoczny na zapleczu w zakładce Moduły -> Katalog
Nie ma on jeszcze ikonki ani żadnego opisu, ale to za chwilę…
Metoda konstruktora
Czas na wypełnienie naszej klasy kilkoma podstawowymi linijkami konstruktora. Konstruktor jest pierwszą metodą, która zostanie wywołana, gdy moduł zostanie załadowany, dlatego jest to najlepsze miejsce do ustawienia jego szczegółów.
<?php
if (!defined('_PS_VERSION_')) {
exit;
}
class MojModul extends Module
{
public function __construct()
{
$this->name = 'mojmodul';
$this->tab = 'front_office_features';
$this->version = '1.0.0';
$this->author = 'Tadeusz Sasnal';
$this->need_instance = 0;
$this->ps_versions_compliancy = [
'min' => '1.7',
'max' => '1.8',
];
$this->bootstrap = true;
parent::__construct();
$this->displayName = $this->l('Mój moduł');
$this->description = $this->l('Opis mojego super modułu.');
$this->confirmUninstall = $this->l('Jesteś pewien, że chcesz odinstalować?');
if (!Configuration::get('MYMODULE_NAME')) {
$this->warning = $this->l('No name provided');
}
}
}
Zaczynając od linii 10 mamy tutaj:
- 10 – name – Nazwa techniczna modułu. MUSI być taka sama jak folder modułu i główny plik klasy. Akceptowane są tylko małe litery i cyfry.
- 11 – tab – zawiera informację o sekcji na zapleczu, w której nasz moduł będzie wyświetlany
- 12 – version – zawiera numer wersji modułu, wyświetlany na liście modułów.
- 13 – author – jak można się domyślić, zawiera imię i nazwisko autora.
Poniżej mamy sekcję zajmującą się relacją z modułem i jego środowiskiem (czyli PrestaShop):
- 14 – need_instance – określa, czy załadować klasę modułu przy wyświetlaniu listy wszystkich modułów na zapleczu. Jeśli jest ustawiony na 0, moduł nie zostanie załadowany, więc zużyje mniej zasobów ale… jeśli Twój moduł musi wyświetlać komunikat ostrzegawczy na stronie „Moduły”, (np. z informacją o dostępności nowej wersji) musisz ustawić ten atrybut na 1.
- 15 – ps_versions_compliancy – określa, z którą wersją Prestashop dany moduł jest kompatybilny. W powyższym przykładzie definiujemy zakres zgodności między 1.7.0.0 a 1.8.0.0. Możemy także użyć zmiennej _PS_VERSION_ np. ’max’ => _PS_VERSION_
- 19 – bootstrap – określa czy pliki szablonów (tpl) są zbudowane przy pomocy Bootstrapa – jak to się często miało w przypadku Presty 1.6
Następnie w linii 21 wywołujemy metodę konstruktora z nadrzędnej klasy PHP:
parent::__construct();
To wywołanie metody musi być umieszczone po zmiennej $this->name ale i przed frazami które można tłumaczyć na inne języki.
W następnym bloku mamy ciągi tekstowe, które możemy przetłumaczyć na inne języki.
- 23 – displayName – nazwa modułu wyświetlana na liście modułów
- 24 – description – opis modułu — także pokazywany na liście modułów
- 26 – confirmUninstall – wiadomość z pytaniem na przykład: czy aby na pewno chcemy odinstalować dany moduł…
Moduł widoczny na liście zostanie uzupełniony informacjami – jest na razie bez ikony.
Możesz zainstalować moduł, ale nic on jeszcze nie robi.