Aggiungere nuovi campi alla form di registrazione di Joomla 1.5



In questa breve guida vengono illustrati i passaggi chiave, nonché le modifiche da effettuare sui files specifici al fine di aggiungere uno o più campi alla form di registrazione predefinita di Joomla. Bisogna puntualizzare che in alternativa a questa metodologia è possibile aggiungere campi alla form di registrazione utente in maniera più semplice tramite l’apposita funzione messa a disposizione dal componente Community Builder.

I passaggi di seguito descritti fanno riferimento e quindi possono essere applicati su versioni di Joomla superiori alla 1.5, in quanto per le versioni precedenti cambia la localizzazione dei files e delle cartelle cui faremo riferimento.

Per prima cosa bisogna aggiungere la colonna relativa al campo desiderato nella tabella jos_users tramite ad esempio un programma di amministrazione del database come phpmyadmin o mysqladministrator. Come esempio inseriamo un campo “cognome” ed un campo “eta”.

Ora invece vediamo quali files di Joomla dovranno essere modificati in modo da ottenere il nostro obiettivo.

1) Per prima cosa modifichiamo il file, in modo da permettere l’accesso al nuovo campo della tabella jos_users:

..librariesjoomladatabasetableuser.php

 

Aggiungiamo il codice:

 

var $cognome = null;

var $eta = null;

subito dopo la riga:

 

var $name = null;

 

—-qui inseriamo il codice di cui sopra—-

 

 

Da notare che è possibile effettuare dei controlli sulla registrazione inserendoli sempre in questo file nella specifica funzione check(). Ad esempio se volessimo controllare che l’età sia un valore numerico possiamo scrivere all’interno di function check(){} le seguenti righe di codice:

 

if (!is_numeric($this->eta )) {

$this->setError( JText::_( ‘Impossibile effettuare la registrazione: Eta deve essere numerica.’ ) );

return false;

}


 

2) Andiamo ora ad aggiungere i campi “Cognome” ed “Eta” nella form di registrazione visibile all’utente. Il file da modificare è il seguente:

 

..componentscom_userviewsregistertmpldefault.php

 

 

Nel dettaglio aggiungiamo le seguenti righe di codice:

 

<tr>

<td width=”30%” height=”40″>

<label id=”cognomemsg” for=”cognome”>

<?php echo JText::_( ‘Cognome’ ); ?>:

</label>

</td>

<td>

<input type=”text” name=”cognome” id=”cognome” size=”40″ value=”<?php echo $this->user->get( ‘cognome’ );?>” class=”inputbox required” maxlength=”50″ /> *

</td>

</tr>

 

 

<tr>

<td width=”30%” height=”40″>

<label id=”etamsg” for=”eta”>

<?php echo JText::_( ‘ETA’ ); ?>:

</label>

</td>

<td>

<input type=”text” name=”eta” id=”eta” size=”40″ value=”<?php echo $this->user->get( ‘eta’ );?>” class=”inputbox required” maxlength=”5″ /> *

</td>

</tr>

 

 

Se vogliamo che compaiano dopo il campo nome dovranno essere aggiunte subito dopo le seguenti righe di codice:

 

<tr>

<td width=”30%” height=”40″>

<label id=”namemsg” for=”name”>

<?php echo JText::_( ‘Nome’ ); ?>:

</label>

</td>

<td>

<input type=”text” name=”name” id=”name” size=”40″ value=”<?php echo $this->user->get( ‘name’ );?>” class=”inputbox required” maxlength=”50″ /> *

</td>

</tr>

 

—-qui inseriamo il codice di cui sopra—-

 

 

Da notare che specificando il parametro class=”inputbox required” verrà effettuato il controllo che il campo non sia lasciato vuoto prima di procedere alla registrazione.

 

 

 

3) Ora invece passiamo alle modifiche da effettuare in modo che i campi aggiunti compaiano nella gestione degli utenti dell’amministrazione.

Andiamo a modificare i seguenti files:

 

..administratorcomponentscom_usersviewsuserstmpldefault.php

..administratorcomponentscom_usersviewsusertmplform.php

 

 

Nel primo file aggiungiamo le seguenti righe di codice:

 

 

 

<th class=”title”>

<?php echo JHTML::_(‘grid.sort’, ‘Cognome’, ‘a.cognome’, @$this->lists[‘order_Dir’], @$this->lists[‘order’] ); ?>

</th>

 

 

<th class=”title”>

<?php echo JHTML::_(‘grid.sort’, ‘Eta’, ‘a.eta’, @$this->lists[‘order_Dir’], @$this->lists[‘order’] ); ?>

</th>

 

Esse vanno inserite dopo le righe seguenti:

 

 

<th class=”title”>

<?php echo JHTML::_(‘grid.sort’, ‘Name’, ‘a.name’, @$this->lists[‘order_Dir’], @$this->lists[‘order’] ); ?>

</th>

 

—-qui inseriamo il codice di cui sopra—-

 

 

 

 

Inoltre aggiungiamo:

 

<td>

<?php echo $row->cognome; ?>

</td>

 

 

<td>

<?php echo $row->eta; ?>

</td>

 

 

 

 

Il codice va inserito dopo le righe seguenti:

 

<tr class=”<?php echo “row$k”; ?>”>

<td>

<?php echo $i+1+$this->pagination->limitstart;?>

</td>

<td>

<?php echo JHTML::_(‘grid.id’, $i, $row->id ); ?>

</td>

<td>

<a href=”<?php echo $link; ?>”>

<?php echo $row->name; ?></a>

</td>

 

—-qui inseriamo il codice di cui sopra—-

 

 

 

 

 

Nel file ..administratorcomponentscom_usersviewsusertmplform.php

andiamo invece ad aggiungere:

 

<tr>

<td class=”key”>

<label for=”cognome”>

<?php echo JText::_( ‘Cognome’ ); ?>

</label>

</td>

<td>

<input type=”text” name=”cognome” id=”cognome” class=”inputbox” size=”40″ value=”<?php echo $this->user->get(‘cognome’); ?>” />

</td>

</tr>

 

 

<tr>

<td class=”key”>

<label for=”eta”>

<?php echo JText::_( ‘ETA’ ); ?>

</label>

</td>

<td>

<input type=”text” name=”eta” id=”eta” class=”inputbox” size=”40″ value=”<?php echo $this->user->get(‘eta’); ?>” />

</td>

</tr>

 

 

 

 

Il codice va inserito dopo le righe:

 

<legend><?php echo JText::_( ‘User Details’ ); ?></legend>

<table class=”admintable” cellspacing=”1″>

<tr>

<td width=”150″ class=”key”>

<label for=”name”>

<?php echo JText::_( ‘Name’ ); ?>

</label>

</td>

<td>

<input type=”text” name=”name” id=”name” class=”inputbox” size=”40″ value=”<?php echo $this->user->get(‘name’); ?>” />

</td>

</tr>

 

 

—-qui inseriamo il codice di cui sopra—-

 

 

 

 

 

In conclusione attraverso questa guida si è visto come procedere per aggiungere un nuovo campo alla form di registrazione standard di Joomla. Problemi relativi a questo tipo di personalizzazione potrebbero presentarsi in caso di aggiornamento a versioni successive di Joomla o ad eventuali aggiornamenti di sicurezza che comportino delle sostituzioni dei files sopra modificati.

Annunci sponsorizzati:
Condividi su Facebook Condividi su Twitter!
  • Simone

    Salve, ho trovato molto esauriente il tuo post!
    Ora però ho un problema, nella mail di registrazione nuovo utente (cioè la mail che arriva all’admin dopo ogni reg.) non contiene ne i dati inerenti al cognome ne quelli inerenti alla data! Come mai?
    In attesa, ti rirngrazio anticipatamente!
    Simone

  • Rosario

    Hai fatto un bellissimo lavoro mi è stato molto utile. Grazie!

  • Mario

    Sto smanettando con joomla e sto anche cercando di capire un po’ il php. Volevo chiederti se la sintassi è molto differente nel caso in cui al posto dell’età volessi inserire l’anno di nascita con l’elenco degli anni.
    Questo articolo mi è stato comunque già molto utile. :)
    Grazie

  • Scusa, ma ho fatto tutto.. solo che il form non è cambiato di una virgola..

  • Rossy

    Ciao,
    per aggiungere questi campi anche alla mail, cha arriva all’amministratore dopo la registrazione di un utente?

    Grazie

  • Giacomo

    Ciao, ho trovato molto ben fatta la tua guida e l’ho messa in pratica per aggiungere campi alla mia form. Il problema è che mentre nel back end tutto fila ed i nuovi campi compaiono correttamente nella gestione degli utenti, nella form di registrazione tutto è rimasto come prima eppure sono sicuro che in remoto c’è il nuovo template di registrazione con i nuovi campi etc.
    Sembra quasi che qualsiasi modifica io faccia qui:
    ..\components\com_user\views\register\tmpl\default.php
    venga ignorata.
    Non è che manca ancora un particolare o un file da modificare?

  • mary2982

    Ciao,ho messo seguito attentamente le indicazioni della tua guida e in effetti ha messo il campo cognome che mi serviva,ma ora c’è un piccolo problema…non effettua più la registrazione!!!non mi da alcun errore,ma la pagina si riaggiorna con i campi vuoti,ma non effettua niente.cosa c’è che non va??

  • vigo

    ciao, io ho aggiunto un campo di tipo radio cioè con la doppia scelta si-no…ma non riesco ad inviare al database l’informazione…visto che questa guida è così chiara volevo un aiuto per questa variante…grazie

  • Antonio

    GRAZIE! E’ davvero stupendo!Funziona alla perfezione

  • Ciao,innanzitutto grazie per le informazioni, ma ho un piccolo dettaglio: non mi registra le informazioni aggiuntive nel database, ovvero nella gestione utente, non inserisce il contenuto dei campi aggiuntivi, sapresti darmi una dritta? ti ringrazio anticipatamente

  • Elia

    jtableuser::storicizzazione fallita

    mi da quest’errore come mai?

Pinterest