Joomla! - Upload field per contact form

google-plus Scritto da . Postato in Joomla!

Molto probabilmente, se usate Joomla!, avete affrontato il problema di inserire campi aggiuntivi nel contact form del componente com_contact.

Cercando su Google, mi è capitato di vedere che in molti si sono cimentati nel tentativo di creare un upload field senza ricorrere a componenti o plugin di terzi che sostituissero il componente com_contact di Joomla!

Caso strano, è che se anche Joomla! è predisposto per accettare plugin di tipo content che aggiungano campi dinamicamente alla form dei contatti, secondo la mia esperienza, questi non sembrano funzionare.

Infatti per creare un plugin gruppo content e inserire un nuovo campo nel form, bisogna agire sul file components/com_contact/models/forms/contact.xml di Joomla!. Mi spiego meglio:

Per dare modo a Joomla! di inserire nella parte inferiore del form il codice necessario per descrivere il campo che si desidera aggiungere, un ipotetico plugin (come spiegato dalla guida della comunity) lavorando secondo il trigger onContactPrepareForm, dovrebbe aggiungere il codice innestato nel file xml in esso contenuto, al file contact.xml di Joomla!. Ma così sembra non essere.

Modifica del file contact.xml

Per questo primo passo da compiere è aggiungerlo direttamente a mano nel file contact.xml: Aprite il file e prima del campo captcha inserite il seguente codice:

<fieldset name="uploadfield" label="Allega file">
                <field
                        name="contact_upload"
                        type="file"
                        id="contact_upload"
             description="COM_CONTACT_UPLOADLABEL"
                        label="COM_CONTACT_UPLOAD"
                />
</fieldset>

Ora il campo sarebbe fisicamente visibile nella form.

Modifica del file contact.php

Ma perché il tutto funzioni e il file in upload non sia caricato sul server e poi vi rimanga (infatti così facendo l'upload lo porterebbe solo all'interno del vostro spazio dominio), dovete aprire il file components/com_contact/controllers/contact.php e prima della riga.

 $sent = $mail->Send();

aggiungere:

$mail->addAttachment($data['contact_upload']);

Ciò fa in modo che al messaggio spedito, venga aggiunto come allegato il file che è stato caricato attraverso il campo di upload.

Aggiungere le chiavi di lingua

Ora mancano le chiavi di lingua, etichetta e descrizione del campo: Aprite il file language/it-IT/it-IT.com_contact.ini e in fondo ad esso aggiungete le seguenti chiavi (copia/incolla):

COM_CONTACT_UPLOADLABEL="Allega un file"
COM_CONTACT_UPLOAD="Seleziona file"

Al contrario di quello che si può pensare, non bisogna agire sulla view default_form.php aggiungendo fisicamente il campo con il codice php, anche se penso funzioni ugualmente. Già con i passaggi descritti il campo comparirà nel form.

Override della view contact

Comunque, perché l'upload funzioni, bisogna comunque fare l'override ( potrebbe essere utile la lettura dell'articolo sull'override ) del file components/com_contact/views/default/default_form.php. Andando nella cartella del vostro template, (es. templates/vostro_template) create la cartella html se già non esiste e al suo interno la cartella com_contact/contact e all'interno copiate il file default_form.php menzionato prima. Apritelo e nel tag <form ... aggiungete il seguente codice o attributo:

enctype="multipart/form-data"

Manca il plugin che ho prelevato dal sito rupostel.com soluzione interessante, ma il plugin non funzionava in fase di upload e lo ho leggermente modificato.

Scaricare e installare il plugin

Lo potete scaricare da qui.

Il plugin è creato, come potete leggere anche sul sito originale non con particolari misure di sicurezza. Quindi usatelo a vostro rischio e pericolo. Sarebbe da modificare introducendo un filtro sulle possibili estensioni in upload e utilizzando le classi che Joomla! mette a disposizione per l'upload dei file.

Una volta seguita la guida, installato e attivato il plugin, i file, uplodati dalla contact form verranno messi nella cartella upload della vostra installazione Joomla! oltre che reindirizzati nella vostra casella mail.

 


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

Aggiungi commento


Codice di sicurezza
Aggiorna

  • logo prontopro
  • logo boutique serramento
  • koilab japan and tropical fish farm
  • Trasloco economico - gruppo Arco Traslochi
  • logo flash pulizie
  • logo revolution
  • logo planetkoi small
  • logo finiture
  • ick logo template
  • montaggio mobili trento

Realizzato da: Daniele Gagliardi
Viale Monache 3 - 38062 Arco - TN
- Contattami -

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. La nostra Privacy Policy è cambiata: Ti invitiamo a prenderne visione. Oppure visiona la nostra Cookie Policy: