Aggiungere campi personalizzati in joomla 2.5
19 set 2012 33 Commenti
in Tutorials Tags: joomla, tutorial
Come abbiamo visto nell’ultimo tutorial, Visualizzare una lista degli utenti registrati con profilo e avatar, Joomla permette di estendere i 4 campi di default per un utente in qualcosa di più completo aggiungendo altre informazioni come indirizzo, città, cap, telefono, ecc…
Ma molti utenti hanno bisogno di personalizzare la proprio scheda di registrazione utenti, aggiungendo nuovi campi per profilare al meglio i propri utenti in base al tipo di sito. Ad esempio, nel tutorial precedente avevamo fatto l’esempio di un sito per una consulta universitaria, allora in questo caso io ho bisogno di aggiungere il campo “Ente di riferimento”, “Dipartimento”, “Responsabilità”, e così via. Proprio per questo oggi andremo a vedere come aggiungere infiniti campi senza, anche in questo caso, installare complicati plugin, ma basta editare un paio di file; questo, oltre a evitarci rompi capo nel cercare il plugin più adatto, ci permette di avere un controllo completo sui campi creati e inoltre avere una gestione completamente integrata in Joomla, lo stesso motore di ricerca interno al sito ad esempio è in grado di ricercare anche in questi nuovi campi, inoltre possono essere disabilitati, resi opzionali, o obbligatori ptoptio come per i campi di default e appariranno in front-end nella scheda contatto, come in fase di registrazione e di modifica da parte dell’utente. Insomma quello che andremo a vedere in questo tutorial sarà sicuramente di utilità a molti.
Step 1 – duplicare il plugin:

La prima cosa che andremo a fare sarà quello di duplicare il plugin User Profile, questo per evitare che al prossimo aggiornamento vengano sovrascritte le nostre modifiche, il tutorial si può applicare anche sul plugin originale, ma a vostro rischio e pericolo non dite che non vi ho avvertito (in ogni caso fate un backup prima di ogni aggiornamento):
- Quindi, creiamo una cartella sul nostro desktop e chiamiamola profile_v2
- Accediamo con il nostro FTP alle cartelle di Joomla sul nostro server, e andiamo in plugins/user/profile, copiamo tutti i file in locale nella cartella profile_v2 appena creata.
- Poi copiamo da administrator/language/en-GB i seguenti file:
- en-GB.plg_user_profile.ini
- en-GB.plg_user_profile.sys.ini
- Rinominiamo i file di lingua in en-GB.plg_user_profile_v2.in e GB.plg_user_profile_v2.sys.ini
- Il prossimo passo sarà quello di rinominare tutte le occorrenze di profile con profile_v2 nei file profile.xml e profile.php
- profile.xml
Reinominiamo profile.xml in profile_v2.xml
LINEA 3: <name>plg_user_profile_v2</name>
LINEA 14: <filename plugin=”profile_v2″>profile_v2.php</filename>
LINEA 19: <language tag=”en-GB”>en-GB.plg_user_profile_v2.ini</language>
LINEA 20: <language tag=”en-GB”>en-GB.plg_user_profile_v2.sys.ini</language> - profile.php
Rinominiamo profile.php in profile_v2.php
LINEA 18: class plgUserProfile_v2 extends JPlugin
- profile.xml
Adesso creiamo un archivio ZIP di tutta la cartella profile_v2 e installiamo il nostro nuovo plugin profile_v2.zip da Gestione Estensioni come un normale plugin, dopodiché se è abilitato, disabilitiamo il plugin User Profile e abilitiamo il nostro User Profile_v2 appena installato.
Step 2 – un nuovo campo:
Il prossimo passo sarà quello di aggiungere un nuovo campo di testo, ad esempio il campo “Mobile” per inserire un ulteriore numero di telefono. Per prima cosa editiamo il file:
/plugins/user/profile_v2/profiles/profile.xml
All’interno del file XML, come possiamo notare, troviamo dichiarati tutti i campi attualmente disponibili per un’utente, ogni campo è identificabile dal tag <field …. />.
Nel punto dove più ci piace, ad esempio nel nostro caso sotto al field phone, per essere coerenti, inseriamo il nuovo campo Mobile, andando a scrivere questo pezzo di codice:
<field
name=”mobile“
description=”Il tuo numero di telefonino“
filter=”string”
label=”Mobile“
message=”PLG_USER_PROFILE_FIELD_WEB_SITE_MESSAGE”
size=”30″
/>
Possiamo anche decidere di inserire una select, con alcune opzioni, in questo caso il codice sarà così:
<field
name=”pagamenti“
description=”Dichiara se l’utente è in regola o no con i pagamenti“
filter=”string”
label=”Pagamenti“
message=”PLG_USER_PROFILE_FIELD_WEB_SITE_MESSAGE”
size=”30″
>
<option value=”in regola”>In regola</option>
<option value=”non in regola”>Non in regola</option>
</field>
In <option> inseriamo le varie opzioni, che possono essere più di 2, nell’esempio sopra abbiamo inserito un campo per identificare se l’utente è in regola o meno con i pagamenti.
Step 3 – configurazioni per il nuovo campo:
Ora rendiamo il nostro campo “configurabile” da back-end, ovvero come succede per gli altri user profile fields, inseriamo il codice necessario a configurare il campo come Opzionale, Obbligatorio o Disabilitato.
Editiamo il file:
plugins/user/profile_v2/profile_v2.php intorno alla riga 71 aggiungendo il campo “mobile” nell’arrey in questo modo:
$fields = array(
‘address1′,
‘address2′,
‘city’,
‘region’,
‘country’,
‘postal_code’,
‘phone’,
‘mobile’,
‘website’,
‘favoritebook’,
‘aboutme’,
‘tos’,
‘dob’,
);
Ora editiamo il file:
plugins/user/profile_v2/profile_v2.xml
in 2 punti:
- Per il form di registrazione e amministratore
- Per il form di modifica da parte dell’utente
Per il primo punto scriviamo intorno alla riga 100 questo codice:
<field “name”=register-require_mobile” type=”list”
description=”Il numero di telefonino”
label=”Mobile”
>
<option value=”2″>JOPTION_REQUIRED</option>
<option value=”1″>JOPTION_OPTIONAL</option>
<option value=”0″>JDISABLED</option>
</field>
Per il secondo punto nello stesso file intorno alla riga 320, o comunque nel punto dove più si addice in base al tipo di campo, è indifferente:
<field “name”=profile-require_mobile” type=”list”
description=”Il numero di telefonino”
label=”Mobile”
>
<option value=”2″>JOPTION_REQUIRED</option>
<option value=”1″>JOPTION_OPTIONAL</option>
<option value=”0″>JDISABLED</option>
</field>
Come vedete dall’immagine ora il campo è visibile anche per una configurazione da back end.

e ovviamente da front-end:

Ripetete i punti 2 e 3 per ogni campo che volete inserire.
Finito.
Post che ti potrebbero interessare
33 Commenti (+aggiungi il tuo?)
Lascia un commento









Lista degli utenti registrati con profilo e avatar | Joomla

















nov 21, 2012 @ 12:24:23
Ciao, intanto grazie per questo tutorial. Premetto che di programmazione ne so davvero poco ma volevo fare una precisazione e contemporaneamente farti una richiesta d’aiuto.
Nello Step 2 del tuo tutorial ho avuto la necessità di inserire un campo select con una lista di
Per far effettivamente comparire la lista ho dovuto aggiungere:
type=”list”
e, nel caso si volesse dare l’opportunità all’utente di eseguire scelte multiple:
multiple=”true”
A parte questo… ora non ho errori, ho inserito il nuovo campo (anche nel backend) ma in fase di modifica di un profilo questo nuovo campo non viene assolutamente salvato (come funziona? non dovrebbe essere salvato nel db?) Se provo ad andare nel mio profilo utente e nel nuovo campo che ho creato assegno un valore dalla lista e poi clicco su SALVA mi esce l’avviso ‘Profilo correttamente salvato’ e vedo la mia pagina Profilo. In questa pagina, di fianco a MOBILE (il nuovo campo) esce la scritta Array…
mi puoi aiutare?
Grazie
nov 21, 2012 @ 13:34:07
Fai delle prove con un campo di testo semplice e vedi se funziona. Fammi sapere.
nov 21, 2012 @ 14:41:46
ok ho risolto, era il multiple=”true” che avevo aggiunto io che dava il problema.
Ora vedo una lista con più opzioni, posso sceglierne una e viene regolarmente registrata.
Io però avrei bisogno di consentire una scelta multipla… hai idee di come si possa fare?
Con il multiple=”true” funziona la scelta multipla ma poi ti va a scrivere nel db ‘Array’
nov 21, 2012 @ 18:51:13
Ciao Gabriele, prova a togliere filter=”string” quando utilizzi il multiple.
Davide
nov 22, 2012 @ 09:32:23
Ho provato ma non funziona. Se tolgo filter=”string” praticamente non inserisce il valore che seleziono e poi se vado in ‘Profilo’ vedo i valori sfalsati di 1.
Per farti capire meglio:
Categoria: (qui dovrebbe esserci il valore o i valori che scelgo)
Indirizzo: Via Roma 11
Senza il filter=”string” risulta così:
Categoria: Via Roma, 11
Indirizzo: Nessuna informazione inserita
dic 22, 2012 @ 19:27:57
Ciao, grazie per il tuo tutorial.
Ho personalizzato questo modulo inserendo i campi a me necessari, cambiando anche le stringhe di testo, ma ho un problema con il campo per accettare le condizioni di utilizzo del sito: non visualizzo più il radio button per l’accettazione….al suo posto un semplice campo da compilare.
Da back end è tutto come dovrebbe essere, posso disabilitare l’accettazione facendo scomparire il campo “accetta condizioni di utilizzo”.
dic 22, 2012 @ 23:15:00
ho risolto, mancava la cartella “fields” nel file xml, ho controllato nel file originale e manca anche li.
fields
Grazie mille lo stesso!
mar 25, 2013 @ 11:21:07
Ho il tuo stesso problema .. come hai risolto non ho ben capito.. cos’è la cartella fields e come va aggiunta? Grazie in anticipo
apr 03, 2013 @ 11:12:24
la cartella “fields” mancante non è nel file xml, la trovi in ftp nella cartella del plugin originale. la devi copiare quindi in FTP da “profile” a “profile_v2″. Alex
gen 09, 2013 @ 16:48:14
Ottima guida, ma penso manchino i riferimenti al database, non si deve modificare nulla?
gen 09, 2013 @ 16:59:49
Ciao Antonio, no i campi sono “dichiarati” in dei file xml come spiegato, poi vengono riportati nel DB, ma è un processo che fa in automatico la piattaforma.
Davide
gen 21, 2013 @ 12:50:20
Buongiorno,
inserendo un campo personalizzato (ad esempio numero tessera) con l’opzione required è attivo il controllo dei valori duplicati? Il numero della tessera deve essere univoco.
Grazie davide
gen 21, 2013 @ 13:46:21
Buongiorno, no, il campo è un semplice campo di testo. Dovresti agire sul codice per implementare un controllo lato db o php.
gen 28, 2013 @ 06:41:01
Complimenti per i tutorial chiari e comprensibili anche per me che non conosco i linguaggi.
Ti chiedo un aiuto poichè devo realizzare con urgenza un sito con joomla 2.5 nel quale inserire un form di ricerca personalizzato. Essendo un portale turistico il visitatore deve poter scegliere di fare una ricerca per località, categoria, sottocategoria o nome azienda. Joomla a un modulo di ricerca avanzata ma con parametri che non si possono modificare; ho anche cercato di risolvere il problema cercando nei forum ma nulla. Potresti aiutarmi? Credo che un tutorial sarebbe di aiuto a molti poichè da mesi che girovago sul web ed è un problema comune a molti. Grazie.
gen 28, 2013 @ 09:39:40
Ciao Francesca e grazie, puoi provare ad utilizzare il componente k2 con modulo “JA K2 Filter and Search”. Il componente è un po’ ostico all’inizio, ma se impari ad utilizzarlo ti semplifica la vita.
Davide
gen 29, 2013 @ 06:37:44
Davide sai indicarmi dove poter cercare una guida per l’utilizzo del modulo indicato o la sua configurazione? devo installare k2 sul sito e poi il modulo?. Ti ringrazio scusandomi delle domande forse banali.
gen 29, 2013 @ 09:19:35
Ciao Francesca figurati. Qui una guida: http://www.joomla.it/video-guide/4436-come-utilizzare-k2-per-joomla-15.html
Si installa prima il componente e poi il modulo. Impara prima ad usare il componente, il mio consiglio è di installare il tutto su un’installazione di testing, in locale, in modo da non fare danni sul tuo sito. Se hai dimestichezza con joomla lo impari in un giorno anche senza guida.
Ciao,
D
gen 30, 2013 @ 06:59:00
Buongiorno Davide, ti scrivo nuovamente dopo aver segnalato a molte persone il tuo sito e la tua disponibilità. Ho provato a vedere la guida attraverso il link che mi hai segnalato; tuttavia il modulo è acquistabile al costo di 30 euro circa con una documentazione da tradurre. Ti chiedo gentilmente se esiste un sistema alternativo. Coiè un modulo, plug-in o componente che dia la possibilità di effettuare una ricerca avanzata da front-end all’utente che imposti la ricerca sul sito in base ai criteri di ricerca. Come già detto in precedenza dovendo fare un sito turistico l’utente deve poter effettuare una ricerca per categoria (es. b&b, alberghi, agriturismi, ect.), località. Spero di esser stata chiara e confido in una tua risposta. Grazie F.
gen 30, 2013 @ 09:15:03
Si ho capito, però con i moduli joomla standard non saprei darti. Prova a ricercare una discussione sul forum di joomla.it, oppure a creare una nuova. Io ti ho detto come l’avrei fatto io con k2 :)
Davide
feb 07, 2013 @ 11:08:42
Salve ottima guida peccato che non mi funziona non mi fa installare il nuovo plugin mi da questo errore
Fallito caricamento file XML
C:\xampp\htdocs\Joomla1\tmp\install_511376bcc55da\profile_v2/profile_v2.xml
XML: AttValue: ” or ‘ expected
XML: attributes construct error
XML: Couldn’t find end of Start Tag filename line 14
XML: Opening and ending tag mismatch: files line 13 and filename
XML: Opening and ending tag mismatch: extension line 2 and files
XML: Extra content at the end of the document
JInstaller: :Install: Non è stato possibile trovare il file di setup XML di Joomla
mag 11, 2013 @ 18:38:29
Marco sono quasi sicuro che il tuo problema sono le virgolette che nel fare copia e incolla dal sito si impostano come virgolette di apertura e chiusura, devi modificare quelle che hai copiato e riscriverle “
mar 22, 2013 @ 17:38:35
ERRORE.. ( quando provo ad istallare il plugin…)
PLG_USER_PROFILE_XML_DESCRIPTION
JInstaller: :Install: il file non esiste /web/htdocs/www.thecalabria.com/home/tmp/install_514c881b57db9/profile_v2.php
mar 25, 2013 @ 09:59:43
ok risolto, avevodimenticato di rinominare un file :/
apr 15, 2013 @ 20:24:29
Scusa io fatta tutta la procedura ma mi si legge in Inglese…come risolvo?
Ancora grazie.
mag 15, 2013 @ 09:20:42
ciao Davide, grazie per il 2 tutorial, è tutto molto chiaro !
Ho un problema nella visualizzazione del singolo contatto. Ho duplicato il pugin user profile_v2 e inserito i nuovi campi e tutto funziona da back-end. Da front-end quando visualizzo per modificare il mio profilo è tutto a posto e mi fa vedere i campi aggiunti e posso modificarli; ma quando visualizzo la scheda contatto non stampa le informazioni del profile ma solo quelle del contatto. Con il vecchio user profile la scheda contatto invece funziona correttamente e visualizzo i campi di profile. Dove sbaglio?
mag 26, 2013 @ 23:04:18
scusate, ma nessuno ha riscontrato il mio stesso problema ? Funziona tutto tranne la visualizzazione della parte relativa al profilo nella singola scheda di contatto. Eppure i dati sono inseriti… infatti li ritrovo modificando il profilo sia da front-end che da back-end. Non visualizzo i dati inseriti nel profilo solo nella scheda contatto ! Qualcuno sa indicarmi dove cercare l’errore ?
grazie comunque ciao ciao
mag 26, 2013 @ 23:07:39
Un’altra indicazione: se sovrascrivo il plugin user profile funziona tutto ! Ma poi al prossimo upgrade mi tocca rifare… Se invece mi faccio la copia del plugin come descritto… non visualizzo i campi del profilo (profile_v2) nella scheda contatto… :-(
mag 27, 2013 @ 22:41:52
RISOLTO !
La parte del PROFILE non veniva stampata nella scheda profilo utente perchè bisognava cambiare il nome del plugin da profile a profile_v2 anche nei file di visualizzazione del componente com_contact.
Nello specifico io sono interventuta qui:
../com_contact/views/contact/tmpl/default.php
e qui:
../com_contact/views/contact/tmpl/default_profile.php
ed ho sostituito profile con profile_v2 così:
JPluginHelper::isEnabled(‘user’, ‘profile_v2′))
Spero che possa servire… a qualcun altro senza che stia ad impazzire…
mag 28, 2013 @ 09:43:24
Ti ringrazio per la condivisone della risoluzione Federica! Sarà sicuramente di aiuto a molti.
Davide
mag 27, 2013 @ 10:27:21
ciao Davide, grazie delle informazioni.
Avrei solo una domanda da farti: come dovrei modificare i files per aggiungere un campo di tipo Upload File?
Grazie
mag 27, 2013 @ 19:37:16
Ciao, io sto usando Joomla 3.0 e non so se è lo stesso, comunque non riesco a modificare i vari campi in front-end dal menù utente cliccando su Modifica Profilo. In pratica cliccandoci mi apre la schermata dove posso modificare i dati, poi unavolta modificati ricliccando su invia, mi restituisce il messaggio di Successo ma i campi rimangono vuoti (Nessuna informazione inserita). Ho fatto tutto quello che è stato spiegato. Qualcuno sa come fare? Grazie
mag 28, 2013 @ 17:08:01
Ciao,
questi dati in quale tabella del database si salvano? Nella tabella “standard” jos_users non li vedo…
Mi servirebbe sapere questo perchè dovrei esportare i dati periodicamente.
ciao e grazie
giu 14, 2013 @ 12:13:07
Ciao Davide, Ottimo tutorial. Ora ho un piccolo problema, ma non riesco a far abilitare i termini di utilizzo. e Poi avrei necessuta di creare una check box con 3 possibili scente.
Ciao grazie