Dalla versione 1.1.4 di VirtueMart esiste una interessante novità, una funzionalità semplice ma efficace per poter personalizzare il funzionamento dell’applicativo senza interferire con il codice originale e quindi tenendosi aperta la strada degli aggiornamenti di versione. Vi avviso, per capire quanto segue è necessario avere un minimo di competenza di programmazione PHP. Vediamo di che si tratta.
Definizione delle classi
In VirtueMart, la maggior parte delle funzionalità è definita a livello di classe: esiste una classe ps_product per la gestione dei prodotti, una ps_cart per la gestione del carrello, e così via. Una curiosità: il prefisso “ps_” deriva da PhpShop, ovvero il progenitore originale di VirtueMart.
Le classi sono definite nella negli omonimi file della cartella
/administrator/components/com_virtuemart/classes
Troveremo quindi, per esempio, nel file ps_product.php la definizione della classe ps_product.
Fino alla versione 1.1.3, per modificare il comportamento di un metodo o aggiungerne uno nuovo, non avevamo altra scelta che modificare tale file; giocandoci così la possibilità di aggiornare – o meglio, dovendo poi riapplicare tutte le personalizzazioni.
La novità
Dalla versione 1.1.4, invece, ogni classe è stata sdoppiata, creando una classe di riferimento “originale” e una di utilizzo che viene effettivamente istanziata. Ad esempio, ora nel file ps_product.php troverete la classe vm_ps_product e la classe ps_product. Se non tocchiamo nulla, queste due classi sono equivalenti: infatti, la seconda è definita semplicemente come
class ps_product extends vm_ps_product { }
Tuttavia, e qui sta il trucco, questa definizione si applica solo se tale classe non è già stata definita nel nostro tema di VirtueMart. In altre parole, possiamo essere noi a creare una definizione
class ps_product extends vm_ps_product { ... }
mettendoci metodi nuovi o personalizzati. In questo modo, la nostra classe ps_product eredita tutti i metodi e le proprietà della vm_ps_product ma ci permette di aggiungere le funzionalità desiderate.
Istruzioni
Innanzitutto dobbiamo attivare questa opzione nella configurazione di VirtueMart, scheda “sicurezza”:
Abilitare l'inclusione di classi estese dalla cartella del tema?
Il sistema va a cercare la nostra eventuale definizione personalizzata in un punto ben preciso del nostro tema VirtueMart. Ricordo che i temi VirtueMart sono separati rispetto ai template di Joomla e si trovano in
/components/com_virtuemart/themes
Se non avete aggiunto nessun tema, in questa cartella avrete solo il “default“. Consiglio: se vi accingete a fare delle personalizzazioni anche minime, create una copia di questo tema: è sufficiente copiare la cartella “default” e rinominarla, dopodichè nella configurazione di VirtueMart (scheda “sito”) sarà possibile scegliere questo nuovo tema.
All’interno del tema utilizzato, create una cartella chiamata user_class. All’interno di questa cartella, create un file con lo stesso nome di quello che contiene la classe in questione. Ad esempio, se state per ridefinire la classe ps_product, create un file PHP vuoto chiamato ps_product.php. In questo file, create una definizione come quella già vista sopra:
class ps_product extends vm_ps_product { ... }
e poi, all’interno delle parentesi graffe, sbizzarritevi a creare i vostri metodi personalizzati.
Tags: programmatore, virtuemart


Feed RSS



