1. Struktura plików modułu
Każdy moduł PrestaShop powinien znajdować się w katalogu /modules
. Struktura przykładowego modułu wygląda następująco:
/mojmoduł
│── mojmodul.php
│── config.xml
│── logo.png
│── /controllers
│── /translations
│── /views
│ ├── /templates
│ │ ├── /admin
│ │ │ ├── konfiguracja.tpl
│ ├── /img
│ ├── /css
│ ├── /js
│── /classes
│── /sql
2. Główny plik modułu: mójmoduł.php
Plik mojmodul.php
to najważniejszy element modułu. Zawiera podstawowe informacje i funkcje niezbędne do jego działania.
Struktura pliku mojmodul.php
<?php
if (!defined('_PS_VERSION_')) {
exit;
}
class MojModul extends Module
{
public function __construct()
{
$this->name = 'mojmodul';
$this->tab = 'administration';
$this->version = '1.0.0';
$this->author = 'Twoje Imię';
$this->need_instance = 0;
parent::__construct();
$this->displayName = $this->l('Mój moduł');
$this->description = $this->l('Opis mojego modułu');
$this->ps_versions_compliancy = ['min' => '8.0.0', 'max' => _PS_VERSION_];
$this->bootstrap = true;
}
public function install()
{
return parent::install() &&
$this->registerHook('displayHeader') &&
$this->installSQL();
}
public function uninstall()
{
return parent::uninstall() && $this->uninstallSQL();
}
private function installSQL()
{
return Db::getInstance()->execute('CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'mojmodul` (`id` INT AUTO_INCREMENT PRIMARY KEY, `data` TEXT) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=utf8;');
}
private function uninstallSQL()
{
return Db::getInstance()->execute('DROP TABLE IF EXISTS `'._DB_PREFIX_.'mojmodul`;');
}
public function getContent()
{
$output = '';
if (Tools::isSubmit('submit_mojmodul')) {
Configuration::updateValue('MOJMODUL_TEXT', Tools::getValue('MOJMODUL_TEXT'));
$output .= $this->displayConfirmation($this->l('Ustawienia zapisane'));
}
return $output.$this->displayForm();
}
private function displayForm()
{
$helper = new HelperForm();
$helper->submit_action = 'submit_mojmodul';
$helper->fields_value['MOJMODUL_TEXT'] = Configuration::get('MOJMODUL_TEXT');
return $helper->generateForm([
['form' => ['input' => [
['type' => 'text', 'label' => $this->l('Tekst'), 'name' => 'MOJMODUL_TEXT', 'size' => 20]]
]]
]);
}
}
3. Omówienie podstawowych metod
-
__construct()
– Konstruktor klasy, ustawia podstawowe informacje o module, takie jak nazwa, wersja, autor, kompatybilność. -
install()
– Rejestruje hooki oraz wywołuje metodęinstallSQL()
do stworzenia tabeli w bazie danych. -
uninstall()
– Usuwa dane modułu i jego tabelę SQL. -
installSQL()
/uninstallSQL()
– Tworzą i usuwają tabele w bazie danych. -
getContent()
– Generuje formularz konfiguracyjny w panelu administracyjnym. -
displayForm()
– Tworzy formularz dla ustawień modułu przy użyciuHelperForm
.
Do katalogu sql można dodać pliki z tworzeniem poszczególnych tabel w bazie danych tak aby móc tym w łatwy sposób zarządzać
W katalogu controllers możemy dodać katalog admin oraz front różnią się one tym że kontorlery umieszczone w katalogu front nie potrzebuja sprawdzać czy osoba korzystająca z nich jest administratorem strony
4. Podsumowanie
To jest podstawowa struktura modułu dla PrestaShop 8.2. Możesz rozszerzyć jego funkcjonalność, dodając własne kontrolery, klasy, widoki czy dodatkowe hooki. Kluczowe jest zrozumienie metod bazowych oraz wykorzystywanie ich w odpowiedni sposób.
Jeśli chcesz dodać np. front-endową obsługę modułu, możesz zarejestrować dodatkowe hooki, np. displayFooter
czy displayProductAdditionalInfo
. (lista dostępnych hooków https://devdocs.prestashop-project.org/8/modules/concepts/hooks/list-of-hooks/)
W razie pytań, pisz śmiało!