Modulis yra PHP kodas, kuris praplečia parduotuvės funkcionalumą nepakeičiant branduolio failų. Jis gali:
- Pridėti naujų funkcijų
- Keisti dizainą / išvaizdą
- Integruoti mokėjimo sistemas
- Siųsti duomenis į išorines sistemas
Modulio struktūra
modules/
└── mano_modulis/
├── mano_modulis.php ← Pagrindinis failas (būtinas)
├── config.xml ← Modulio metaduomenys (neprivalomas)
├── logo.png ← Ikonėlė admin panelėje
├── views/
│ ├── templates/
│ │ ├── front/ ← Šablonai klientams
│ │ └── admin/ ← Šablonai administracijai
│ └── css/ / js/
└── translations/ ← Vertimai
Pagrindinis failas – minimalus pavyzdys
php
<?php
if (!defined('_PS_VERSION_')) exit; // Apsauga
class Mano_Modulis extends Module
{
public function __construct()
{
$this->name = 'mano_modulis'; // Aplanko pavadinimas
$this->tab = 'front_office_features';
$this->version = '1.0.0';
$this->author = 'Vardenis';
$this->need_instance = 0;
parent::__construct();
$this->displayName = $this->l('Mano modulis');
$this->description = $this->l('Modulio aprašymas.');
$this->ps_versions_compliancy = [
'min' => '1.7',
'max' => _PS_VERSION_
];
}
// Įdiegimas
public function install()
{
return parent::install()
&& $this->registerHook('displayHeader');
}
// Pašalinimas
public function uninstall()
{
return parent::uninstall();
}
}
Hook sistema – kaip modulis „kabliaujasi” į parduotuvę
Hook = vieta parduotuvėje, kur modulis gali įterpti savo kodą.
php
// Registruojame hook įdiegimo metu
$this->registerHook('displayHeader');
$this->registerHook('displayHome');
$this->registerHook('actionCartSave');
// Metodas, kuris vykdomas kai hook iššaukiamas
public function hookDisplayHeader($params)
{
$this->context->controller->addCSS($this->_path . 'views/css/style.css');
$this->context->controller->addJS($this->_path . 'views/js/script.js');
}
public function hookDisplayHome($params)
{
return $this->display(__FILE__, 'views/templates/front/home.tpl');
}
Dažniausiai naudojami hook’ai:
| Hook | Vieta |
|---|---|
displayHeader | <head> – CSS/JS įkėlimui |
displayHome | Pagrindinis puslapis |
displayFooter | Apatinė dalis |
displayProductAdditionalInfo | Produkto puslapis |
actionOrderStatusUpdate | Kai keičiasi užsakymo statusas |
actionCartSave | Kai keičiamas krepšelis |
Smarty šablonas (.tpl failas)
smarty
{* views/templates/front/home.tpl *}
<div class="mano-blokas">
<h2>{l s='Labas!' mod='mano_modulis'}</h2>
<p>{$tekstas}</p>
</div>
PHP pusėje perduodame kintamuosius:
php
public function hookDisplayHome($params)
{
$this->smarty->assign([
'tekstas' => 'Tai mano pirmasis modulis!'
]);
return $this->display(__FILE__, 'views/templates/front/home.tpl');
}
Konfigūracijos puslapis (admin)
php
public function getContent()
{
if (Tools::isSubmit('submit_mano_modulis')) {
Configuration::updateValue(
'MANO_MODULIS_TEKSTAS',
Tools::getValue('tekstas')
);
}
$tekstas = Configuration::get('MANO_MODULIS_TEKSTAS');
return '
<form method="post">
<input type="text" name="tekstas" value="' . $tekstas . '">
<button type="submit" name="submit_mano_modulis">Išsaugoti</button>
</form>
';
}
Greitas startas – pirmi žingsniai
- Sukurti aplanką
/modules/mano_modulis/ - Sukurti pagrindinį
.phpfailą su klase - Eiti į Admin → Moduliai → Įdiegti
- Testuoti ir tobulinti