VirtueMart - Aggiungere un campo prodotto

google-plus Scritto da . Postato in Joomla!

VirtueMart 2.0.x è un ottimo prodotto. Purtroppo è pieno di imprecisioni come il predecessore, arrivato poi alla versione 1.2.0 e scartato quando finalmente era un prodotto maturo.

Credo arriveremo alla stessa triste fine anche per la versione 2.x.

Nel complesso, funziona bene per cose non troppo complesse. Ma se è necessario permettere a qualcuno di agire da front-end o creare un sistema multi-vendor posso garantire che diventa complesso customizzarlo anche se si basa su una buona filosofia e una volta imparato il sistema non è poi difficile la modifica.

Virtuemart 2.0.x nasce con un sistema che concede all'utente di definire campi personalizzati o custom da aggiungere ai prodotti. Molto utile!
Il difetto, è se si vuole un'interfaccia che risulti più intuitiva per l'utente, in quanto in inserimento e modifica, il campo va aggiunto prodotto per prodotto, passando per la scheda Campi personalizzati.

Per questo, se l'intenzione è quella di aggiungere un campo, ma di poterlo mettere nella scheda Informazioni prodotto, cioè quella principale in inserimento e modifica, seguite i seguenti passaggi:

Prima cosa da fare, attraverso phpMyAdmin o un database Manager (come Navicat o MySQL Query Browser per Linux) aprire la tabella  tuocod_virtuemart_products e modificarne la struttura inserendo un campo del nome desiderato. Nel mio caso product_year di tipo intero dimensione 4.

Passiamo ora al codice e alle classi PHP da modificare:

La prima classe da modificare la trovate nel percorso tuosito/administrator/com_virtuemart/tables/products.php
Nella prima parte della classe, dove vengono specificati gli attributi, aggiungere il proprio campo personalizzato, ad esempio:

var product_year;

Una volta effettuata questa modifica, siamo pronti per il secondo step.
Aprite il file tuosito/administrator/com_virtuemart/views/product/tmpl/product_edit_information.php
Dopo la seconda riga della tabella HTML, inserire il codice seguente. In questo caso il nostro campo è l'anno di produzione:

<?php $i = 1 - $i; ?> 
<tr class="row<?php echo $i?>">
     <td ><div style="text-align:right;font-weight:bold;">
             <?php echo JText::_('COM_VIRTUEMART_PRODUCT_FORM_YEAR') ?></div>
     </td>
     <td colspan="3">
             <input type="text" class="inputbox" name="product_year" value="<?php echo $this->product->product_year; ?>" size="32" maxlength="255" />
     </td>
</tr> 

Ora bisogna inserire la chiave nel file ini della lingua di virtuemart, che dovrete andare ad aprire al seguente percorso:
tuosito/administrator/language/it-IT/it-IT.com_virtuemart.ini (Questo file riguarda la lingua nel back-end).
Ovviamente al posto di YEAR dovrà esserci il nome del vostro campo e al posto di anno la descrizione da voi desiderata. Inserire la chiave nel file e salvare:

COM_VIRTUEMART_PRODUCT_FORM_YEAR="anno"

Fate la stessa cosa nel file tuosito/language/it-IT/it-IT.com_virtuemart.ini (Questo file riguarda la lingua nel front-end).

Ora, inseriamo in una view del sito, cioè a front-end il nostro campo anno. Per esempio nella view principale: virtuemart.
Aprire il file tuosito/components/com_virtuemart/views/virtuemart/tmpl/default_products.php
Inserire il seguente codice dove si preferisce la visualizzazione del valore del campo prodotto:

<p>
     <?php //Modifica campo Anno
             if($product->product_year) echo JText::_ ( 'COM_VIRTUEMART_PRODUCT_FORM_YEAR' ).": ".$product->product_year;
     ?>
</p>

Il codice soprastante va ripetuto in ogni view dove vi è il bisogno di visualizzare il nuovo campo prodotto, per esempio nella view productdetails.

Ovviamente funzionerà nelle view dove viene richiamato l'oggetto $product. Se avete domande chiedete!

Ed ecco i risultati a back-end:

 vm-prodotto-back-end

A front-end, la view virtuemart:

vm-campo-aggiuntivo

{bwomakase size="468x60"}

Se hai gradito l'articolo, condividilo, basta un click:

Comments are now closed for this entry

Per essere più facile ed intuitivo, il blog fa uso dei cookie, piccole porzioni di dati che consentono di capire come gli utenti navighino e ne visualizzino le pagine. I cookie non registrano alcuna informazione personale sull'utente ed eventuali dati identificabili non verranno memorizzati. Ti invitiamo a prendere visione della nostra Informativa sulla Privacy (aggiornata il 10/06/2021). Oppure visiona la nostra Cookie Policy (aggiornata il 17/10/2019):