Modulo hello World PDF Stampa E-mail
Tutorial
Scritto da Administrator   
Domenica 30 Gennaio 2011 17:50

Una piccola guida per creare il primo modulo in PrestaShop. Ovviamente prendiamo come esempio un blocco Ciao Mondo.

Prima di tutto bisogna creare una cartella che si chiami blockhelloworld e all'interno due file blockhelloworld.php e blockhelloworld.tpl

Incominciamo con il riempire il file .php con la dichiarazione d'apertura di php: name = 'blockhelloword';

definisce il nome, che deve essere uguale al solito nome assegnato

$this->tab = 'Blocks';

serve a dire in che tabs mettere nel BO il modulo, ovviamente se non esiste lo crea

$this->name = 'blockhelloword'; /* the name MUST be the same of the class */
$this->tab = 'Blocks'; /* in wich module category we put (if not exist it will create it) */
$this->version = 0.1; /* version pay attention and change every modification */
parent::__construct(); /* The parent construct is required for translations */
$this->page = basename(__FILE__, '.php'); /* I put my path in a variable */
$this->displayName = $this->l('Block Hello World'); /* The name displayed in BO */
$this->description = $this->l('This Block can display a phrase in FO'); /* Description displayed in BO */

le altre dichiarazioni parlano da sole e sono facoltative.

Ora analizziamo la funzione install che permette al nostro modulo di essere installato dall'utente:

parent::install()

l'installa o restituisce un errore, quindi avremo il messaggio verde installazione completata o mancata installazione del modulo

$this->registerHook('leftColumn')

serve per definire a quale Hook prestashop lega il nostro modulo, essendo un modulo di scritta lo definiamo nella colonna sinistra.

/* I create the function Install, to properly install the module */
function install() {
if (!parent::install() OR !$this->registerHook('leftColumn')) return false;
return true;
}

L'ultima parte del nostro file .php serve a dire al modulo cosa fare quando l'hook definito (in questo caso hookLeftColumn) richiama il nostro modulo.
In pratica l'hook esegue questa funzione nella posizione in cui è richiamato da prestashop La funzione inizializza $smarty (il gestore di template utilizzato da PS),

$smarty->assign('phrase', "hallo world");

serve ad assegnare a smarty ad una variabile (in questo caso phrase) un determinato valore: numero, stringa (come da nostro esempio) o addirittura una matrice.

/* I create a function that will be called from the hook */
function hookLeftColumn($params) {
global $smarty;
$smarty->assign('phrase', "hallo world");
return $this->display(__FILE__, 'blockhelloworld.tpl');
}

alla fine diciamo di visualizzare il nostro file di template (che completeremo sotto). Il file blockhelloworld.tpl: è un file standard di smarty per cui un file di html con la possibilità di passare delle variabili. Definiamo qualche commento che ci può servire a rintracciare il modulo nel codice della pagina completa di prestashop, iniziamo con un DIV che crei la testata del nostro modulo eper questo abbiamo scelto quella standard (ad esempio del blocco link), quindi ci appoggiamo al css per la visualizzazione, H4 mettiamo la nostra prima variabile smarty.
Spiego dopo la sintassi.
Un altro DIV con il block_content e in questo caso riprendiamo la variabile che abbiamo passato dal php: {$phrase} questo si limita a stampare nella posizione la nostra variabile, che sarà formattata come da div.

{l s='My Phrase' mod='blockhelloworld'}

{$phrase}

Prestashop, smarty e le lingue:

{l s='My Phrase' mod='blockhelloworld'}

la testata del nostro blocco contiene la parola: My Phrase, la inseriamo con questa sintassi per poter permettere a Prestashop di tradurla in diverse lingue. In pratica se vado in BO in traduzioni - moduli - italiano troverò un tabs blockhelloworld con all'interno la mia frase, che sarà possibile tradurre in tutte le lingue, quindi è importante quando si realizza un modulo di non scrivere direttamente ma di usare questa sintassi in modo da rendere il modulo facilmente traducibile. Prestashop è un e-commerce di origini francesi, ma lo standard è di fare il modulo in inglese e poi aggiungere la traduzione nella lingua appropriata. In automatico quando si procede alla traduzione Prestashop crea nella cartella del modulo dei file di traduzione (es. it.php o fr.php) con l'equivalente della stringa. Appuntamento ai prossimi giorni con qualche esempio in più di moduli.

Scarica l'esempio: qui

Ultimo aggiornamento Domenica 30 Gennaio 2011 18:22