Qual è la differenza tra modulo e override in PrestaShop?
Il modulo si aggancia a hook e incapsula funzionalità. L’override modifica classi core: è più fragile e va usato solo quando non esistono alternative pulite.
Guida tecnica con esempi di codice: struttura di un modulo PrestaShop, hook, template Smarty e best practice per sviluppare e mantenere moduli.
Questa pagina è una guida pratica per sviluppare un modulo PrestaShop (focus 1.7/8). L’obiettivo è mostrarti un percorso ripetibile: struttura del progetto, hook, template e configurazione.
Crea una cartella in /modules, ad esempio pcdemomodule. Dentro, almeno: file principale del modulo, template e opzionalmente una config.
/modules/pcdemomodule/
pcdemomodule.php
logo.png
config.xml
views/templates/hook/home.tpl
Il file principale deve chiamarsi come la cartella: pcdemomodule.php. La classe deve avere lo stesso nome in CamelCase: PcDemoModule.
<?php
if (!defined('_PS_VERSION_')) {
exit;
}
class PcDemoModule extends Module
{
public function __construct()
{
$this->name = 'pcdemomodule';
$this->tab = 'front_office_features';
$this->version = '1.0.0';
$this->author = 'Autore';
$this->need_instance = 0;
$this->bootstrap = true;
parent::__construct();
$this->displayName = $this->l('PC Demo Module');
$this->description = $this->l('Esempio: stampa un banner in homepage via hook.');
$this->ps_versions_compliancy = ['min' => '1.7.0.0', 'max' => _PS_VERSION_];
}
public function install()
{
return parent::install()
&& $this->registerHook('displayHome');
}
public function hookDisplayHome($params)
{
$this->context->smarty->assign([
'pcdemo_message' => 'Ciao! Questo contenuto arriva da un modulo PrestaShop.',
]);
return $this->fetch('module:pcdemomodule/views/templates/hook/home.tpl');
}
} Il template viene caricato con $this->fetch(...) e vive in views/templates. Qui puoi usare Smarty e classi CSS del tema.
{* views/templates/hook/home.tpl *}
<div class="card" style="margin: 18px 0;">
<h3 style="margin: 0 0 8px;">Modulo PrestaShop</h3>
<p style="margin: 0;">{$pcdemo_message|escape:'htmlall':'UTF-8'}</p>
</div> Il trucco per lavorare bene con PrestaShop è scegliere i punti giusti dove inserire contenuti. Alcuni hook comuni: displayHeader, displayHome, displayFooter, actionProductSave.
Per capire quali hook sono disponibili nel tema, si cerca nel template .tpl dove viene richiamato {hook h=\"...\"}.
Se devi personalizzare un tema, l’approccio consigliato è: child theme (se previsto) / override di template nel tema / asset ben organizzati. Evita di modificare core e moduli di terze parti direttamente.
Keyword: moduli prestashop, prestashop hook, smarty prestashop, sviluppo prestashop
Il modulo si aggancia a hook e incapsula funzionalità. L’override modifica classi core: è più fragile e va usato solo quando non esistono alternative pulite.
In /views/templates/ (hook/front/admin). Per output in hook tipicamente: /views/templates/hook/.