Aggiungere campi nel form della domanda sul prodotto di Virtuemart 2

| | 5 Comments

Oggi vediamo come modificare fai una domanda su questo prodotto su Virtuemart2, esattamente quello che si apre con il lightbox. Tutto ciò avverrà senza fare modifiche al core di Virtuemart per ovvie ragioni di sicurezza e di praticità in quanto un eventuale aggiornamento farebbe perdere le modifiche. Evitare ciò è possibile applicando un override dei template.

askquestion-form-vm2

Copia dei file originali di VM2 nel template

I file da copiare saranno rispettivamente form.php e mail_html_question.php. Il primo è dove inseriremo i campi mentre l’altro va modificato se i campi devono essere visualizzati anche nella mail inviata, ad esempio nel caso di un campo per l’accettazione della privacy non sarà necessario apportare modifiche mentre se mettiamo telefono dovrà essere riportato nella mail e quindi va modificato il file.

Sorgente VM2

components/com_virtuemart/views/askquestion/tmpl

Destinazione Tema

templates/ILTUOTEMA/html/com_virtuemart/askquestion

Ovviamente se nel tema il percorso di cartelle esiste dovrete crearlo. D’ora in poi i file da modificare sono solo quelli copiati all’interno del template.

Aggiungere una textarea per la privacy e il relativo checkbox

Questi due campi vanno aggiunti appena prima del bottone di invio quindi cercate questo div all’interno del file form.php:

<div class="submit">

appena prima aggiungete questo codice:

<textarea readonly="readonly" cols="50" rows="2" name="privacy" id="privacy" >
 <?php echo JText::_("VM2_ASKQUESTION_PRIVACY_AREA"); ?>
</textarea><br/>

<input type="checkbox" name="checkprivacy" id="checkprivacy" value="0"  class="validate[required]" >
<label for="checkprivacy" id="checkprivacy">&nbsp;<?php echo JText::_( "VM2_ASKQUESTION_PRIVACY_LABEL" );?></label>

Bene ora nel backend di Joomla andate su Estensioni->Gestione Lingua->Override Lingua e aggiungete un nuovo override per ogni campo, dove a costante lingua inserirete VM2_ASKQUESTION_PRIVACY_XYZ sostituendo xyz con area e label, e nel testo inserirete ciò che deve vedere l’utente ad esempio tutta la normativa ecc per l’area, e “Ho letto e accetto ecc ecc” per la label. Volendo si potrebbe evitare di mettere la textarea e creare un link a un articolo nella label semplicemente con dell’html nell’override.

Aggiungere un campo solo per alcuni prodotti

Alcuni store necessitano dei campi aggiuntivi nella domanda solo per alcuni prodotti, quindi un’idea potrebbe essere quella di creare un campo personalizzato visibile solo agli amministratori, e aggiungerlo ai prodotti scelti.

Modifica del file form.php

Prendete l’id del campo personalizzato e quindi sostituitelo alle XX nel seguente codice:

<?php
  // VERIFICA CHE AL PRODOTTO SIA ASSOCIATO UN CAMPO CUSTOM CON ID=="XX"
  foreach($this->product->customfields as $field){
     if ($field->virtuemart_custom_id=="XX"){ ?>
        <label>colore: </label>
        <select name="colore" id="colore" class="validate[required]" size="1">
           <option selected="selected" value="">Seleziona un colore</option>
           <option value="rosso">rosso</option>
           <option value="verde">verde</option>
           <option value="blu">blu</option>
        </select>
        <br/>
     <?php
     }
  }
?>

Ovviamente nell’esempio è stata inserita una lista a cascata (dropdown list) ma voi potete sostituirla con il campo che preferite.

Modifica del file mail_html_question.php

Se volete vedere quale opzione l’utente ha selezionato dovete modificare questo file che è il modello di email che arriverà all’amministratore. Quindi aggiungete subito dopo questa riga:

defined('_JEXEC') or die('');

la seguente istruzione:

$this->colore = JRequest::getString ('colore');

Ora nel punto in cui desiderate che compaia inserite ad esempio:

if ($this->colore!=''){
  echo $this->colore . "<br />";
}

Conclusioni

Spero che questi due semplici esempi vi siano stati utili. Postate i vostri commenti e i vostri suggerimenti :D

Riferimenti

vmitalia.net

Tags: , , , , , , , ,

Category: Programmazione

About the Author ()

Studio Ingegneria Informatica e Bio. all' Università Magna Graecia di Catanzaro, sono appassionato di informatica, e mi piace praticare la pesca nelle acque dolci.