Aggiungere campi personalizzati in joomla 2.5

Ti piace quest'articolo?

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):

  1. Quindi, creiamo una cartella sul nostro desktop e chiamiamola profile_v2
  2. 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.
  3. Poi copiamo da administrator/language/en-GB i seguenti file:
  • en-GB.plg_user_profile.ini
  • en-GB.plg_user_profile.sys.ini
  1. Rinominiamo i file di lingua in en-GB.plg_user_profile_v2.in e GB.plg_user_profile_v2.sys.ini
  2. Il prossimo passo sarà quello di rinominare tutte le occorrenze di profile con profile_v2 nei file profile.xml e profile.php
    1. 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>
    2. profile.php
      Rinominiamo profile.php in profile_v2.php
      LINEA 18: class plgUserProfile_v2 extends JPlugin

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:

  1. Per il form di registrazione e amministratore
  2. 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

Previous

40 Commenti (+aggiungi il tuo?)

  1. Gabriele
    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

    Replica

    • Davide Calignano
      nov 21, 2012 @ 13:34:07

      Fai delle prove con un campo di testo semplice e vedi se funziona. Fammi sapere.

      Replica

  2. Gabriele
    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’

    Replica

    • Davide Calignano
      nov 21, 2012 @ 18:51:13

      Ciao Gabriele, prova a togliere filter=”string” quando utilizzi il multiple.

      Davide

      Replica

  3. Gabriele
    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

    Replica

  4. Giuseppe
    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”.

    Replica

  5. Giuseppe
    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!

    Replica

    • Giacomo
      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

      Replica

      • Alex
        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

        Replica

  6. Antonio
    gen 09, 2013 @ 16:48:14

    Ottima guida, ma penso manchino i riferimenti al database, non si deve modificare nulla?

    Replica

    • Davide Calignano
      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

      Replica

  7. 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

    Replica

    • Davide Calignano
      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.

      Replica

  8. Francesca
    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.

    Replica

    • Davide Calignano
      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

      Replica

  9. Francesca
    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.

    Replica

    • Davide Calignano
      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

      Replica

  10. Francesca
    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.

    Replica

    • Davide Calignano
      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

      Replica

  11. MARCO
    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

    Replica

    • salvo86roma
      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 “

      Replica

  12. Giacomo
    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

    Replica

  13. Giacomo
    mar 25, 2013 @ 09:59:43

    ok risolto, avevodimenticato di rinominare un file :/

    Replica

  14. Alessandro
    apr 15, 2013 @ 20:24:29

    Scusa io fatta tutta la procedura ma mi si legge in Inglese…come risolvo?
    Ancora grazie.

    Replica

  15. Federica
    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?

    Replica

    • Federica
      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

      Replica

  16. Federica
    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… :-(

    Replica

    • Federica
      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…

      Replica

      • Davide Calignano
        mag 28, 2013 @ 09:43:24

        Ti ringrazio per la condivisone della risoluzione Federica! Sarà sicuramente di aiuto a molti.

        Davide

        Replica

  17. valerio
    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

    Replica

  18. Luca
    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

    Replica

  19. Giuggiola
    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

    Replica

  20. Fabrizio
    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

    Replica

    • Luitos
      lug 03, 2013 @ 12:47:50

      Fabrizio,
      guarda bene.
      la soluzione è già riportata, per le scelte multiple, nel tutorial stesso e, per i termini di utilizzo, nell’intervento di Alex: cartella “fields” mancante.
      Ciao.

      Replica

  21. Luca
    set 28, 2013 @ 12:13:19

    Salve, utilissimo post!!!
    Premettendo di avere poche conoscenze di php e sql, volevo chiederti se era possibile inserire un campo per fare l’upload di un file.
    Avrei bisogno che l’utente in fase di registrazione possa inserire un pdf per il curriculum vitae.
    In modo da poterlo visualizzare successivamente nella scheda contatti, creata da me seguendo il tuo post precedente: Visualizzare una lista degli utenti registrati con profilo e avatar.
    Ti ringrazio in aticipo.
    Ciao.

    Replica

  22. Serena
    set 29, 2013 @ 19:00:47

    Buongiorno,

    sono una stra neofita di joomla e affini e sto provando a realizzare un sito web…(versione di prova all’indirizzo http://www.demoblueline1.joomlafree.it/ ) sono giorni che cerco su internet di capire come fare per far funzionare al meglio il plugin user_profile…provo a spiegarmi meglio: ho installato il template yougrids e creato il modulo contatti che “di serie” riporta solo alcuni campi quali nome, username, password, ecc, mentre io vorrei aggiungere altri obbligatori come indirizzo, città, cap, p.i. e via discorrendo….cercando sul web ho capito che esiste appunto il plugin user_profile che se attivato aggiunge a piacimento altri campi, volendo anche modificabili…il problema è che il template che sto utilizzando non ne vuole sapere di visualizzarli….ho provato a cambiare template e magicamente appaiono, solo che io vorrei continuare ad utilizzare yougrids e sto letteralmente impazzendo…qualcuno potrebbe aiutarmi per favore ?
    Grazie mille
    Serena

    Replica

  23. Stefano
    nov 22, 2013 @ 17:35:07

    Salve, utilissima guida, vorrei sapere se fra questi campi potrei aggiungere la possibilità di caricare video da youtube e tracce da souncloud , vedo che in molti form c’è l’apposito spazio per inserire il codice video o il codice modulo che poi verrà implementato nel front-end. spero di essere stato chiaro grazie in anticipo.

    Replica

    • Davide Calignano
      nov 22, 2013 @ 17:46:03

      Si credo di si, in teoria in un text-field puoi inserire testo libero che può essere un codice. Non so dirti con certezza se richiederebbe qualche hack per non far pulire il testo dai tag html. Poi una volta che hai il testo lo puoi trattare come qualsiasi altro embed code.

      Replica

  24. Giuggiola
    feb 04, 2014 @ 15:35:17

    Ciao,
    c’è la possibilità di suddividere il modulo di registrazione su 2 pagine? Cioè la parte del modulo standard (nome, username, email, password) nella prima pagina e quella generata con i campi personalizzati sulla seconda?
    grazie

    Replica

  25. mauro
    feb 25, 2014 @ 10:41:57

    Ciao Davide stamattina ho scoperto il tuo sito. Sei stato bravissimo, perchè sono giorni che stavo cercando questo tipo di soluzione. Ho necessità di consentire anche l’upload di u file (curriculum in pdf). E’ possibile?

    Replica

Lascia un commento

Welcome to GraphiCal

Benvenuti nel mio blog e io sono Davide, e questo è un blog sulle mie passioni più grandi: la grafica e le tecnologie web! Spero che possiate trovare qualcosa di interessante, da ispirarvi e prendere spunto! Hey non farti distrarre dai pesciolini!! ;) Nel blog troverai molte risorse sul web design, tutorial e guide, novità sulle ultime tecnologie in voga, oltre a informazioni su di me e sui miei lavori.

Thank you for visiting and enjoy your stay!

© Graphical 2014 Powered by WordPress Contatti

Top ↑