Supporto volontario e collaborativo per Joomla!® in italiano

Nascondere i campi conferma email e conferma password nel form di registrazione

Valutazione attuale: 5 / 5

Stella attivaStella attivaStella attivaStella attivaStella attiva
 
Codice

Spesso può capitare di dover semplificare il form di registrazione di Joomla, eliminando la necessità di inserire due volte l'indirizzo email e due volte la password. Questo perchè per alcune tipologie di siti web, può essere deleterio forzare gli utenti a dover inderire così tante stringhe di testo durante il processo di registrazione.



Su Joomla.it è già disponibile un articolo che spiega come ovviare a questo "problema" tramite un override del componente "com_users". L'articolo è visibile al seguente link: leggi l'articolo.

La soluzione proposta in questo articolo, invece, prevede la creazione (guidata) di un piccolo e semplice plugin personalizzato che avrà due compiti ben precisi: la prima è l'eliminazione dei due campi indesiderati nel form di registrazione di Joomla (email2 e password2, questi sono i loro nomi di sistema), la seconda è la gestione ed il rimedio dell'errore causato dalla mancanza di tali campi. Per questo secondo compito, il plugin andrà a copiare letteralmente i valori inseriti nei campi email e password (email1 e password1) nei campi eliminati (email2 e password2) per i quali comunque Joomla richiede un valore uguale al campo gemello.

Di seguito è mostrato un esempio di form di registrazione nativo, senza alcuna modifica: un form funzionante ma poco efficace a livello di velocità e semplicità, in quanto un utente è obbligato ad inserire informazioni (a volte) superflue per creare il proprio account.



Andando avanti, vediamo come funziona il plugin che andremo a creare. Il metodo "onContentPrepareForm" viene eseguito immediatamente prima della creazione del contenuto del form (di registrazione in questo caso), ed è qui che dobbiamo inserire il codice che si occuperà di eliminare i due campi indesiderati dal form di registrazione.

Il codice da inserire è il seguente:

if (!JFactory::getApplication()->isAdmin()) {
   $form->removeField('password2');
  $form->removeField('email2');
}

Nel codice è compreso anche un controllo per eseguire le istruzioni solamente nel front end del sito, lasciando invariato tutto quello che succede nel backend.

Nel metodo "onUserBeforeSave", eseguito immediatamente prima del salvataggio dei dati immessi dall'utente nel database di Joomla, dovremo inserire il codice che si occuperà di sostituire i valori nulli dei due campi precedentemente eliminati con gli stesi valori inseriti nei relativi campi gemelli.

Il codice da inserire è il seguente:

$user['password2'] = $user['password1'];
$user['email2'] = $user['email1'];

Molto intuitivo e semplice, esso copia letteralmente i dati nei campi email e password, nei due valori rimasti vuoti (email2 e password2).

Il codice finale del nostro plugin quindi sarà così composto:

<?php
defined('_JEXEC') or die('Restricted access');
jimport('joomla.plugin.plugin');
class plgUserNomePlugin extends JPlugin {
    function onUserBeforeSave($user, $isnew, $new)
    {
        JFactory::getLanguage()->load('plg_user_nomeplugin', JPATH_ADMINISTRATOR);
        $app = JFactory::getApplication();
        if (!$isnew || $app->isAdmin())
        {
            return;
        }
        $user['password2'] = $user['password1'];
        $user['email2'] = $user['email1'];
    return true;
    }
function onContentPrepareForm($form, $data)
    {
        if (!($form instanceof JForm))
        {
            $this->_subject->setError('JERROR_NOT_A_FORM');
            return false;
        }
        $name = $form->getName();
        $names = array('com_admin.profile', 'com_users.user', 'com_users.profile', 'com_users.registration');
        if (!in_array($name, $names))
        {
            return true;
        }
        if (!JFactory::getApplication()->isAdmin()) {
            $form->removeField('password2');
            $form->removeField('email2');
        }
        return true;
    }
}
?>

Ovviamente il nostro plugin avrà bisogno anche del file manifest (file .xml) da inserire nell'archivio finale. Per comodità riporto il codice da scrivere nel file manifest, nel quale andranno sostituiti i dati segnaposto.

<?xml version="1.0" encoding="utf-8"?>
<extension version="3.6" type="plugin" group="user" method="upgrade">
    <name>NOME PLUGIN</name>
    <author>NOME AUTORE</author>
    <creationDate>DATA CREAZIONE</creationDate>
    <copyright>COPYRIGHT</copyright>
    <authorEmail>EMAIL AUTORE</authorEmail>
    <authorUrl>SITO WEB AUTORE</authorUrl>
    <version>1.0.0</version>
    <license>LICENZA</license>
    <description>
        DESCRIZIONE PLUGIN
    </description>
    <files>
        <filename plugin="NOME PLUGIN">NOME PLUGIN.php</filename>
        <filename>index.html</filename>
        <filename>NOME PLUGIN.xml</filename>
    </files>
    <config>
        <fields name="params">
        </fields>
    </config>
</extension>

Quindi ricapitolando dovremo creare due file per dar vita al plugin: il file manifest (.xml) ed il file che contiene le istruzioni del plugin (.php). Ambi due dovranno essere nominati con il nome del plugin e le rispettive estensioni. Il tutto è da inserire in un archivio compresso, dov'è buona norma inserire anche un file nominato index.html vuoto (elencato anche nel file manifest).

Di seguito è mostrato un esempio di form di registrazione modificato: i campi "ripeti email" e "ripeti password" sono stati eliminati in modo da permettere agli utenti di creare l'account in modo più semplice (a discapito della sicurezza di aver inserito correttamente la propria email e la propria password). Per semplificare ulteriormente il form, con un metodo simile, è stato nascosco anche il campo "Nome" il quale prende il valore inserito nel campo "Nome utente".


Una volta installato il plugin che abbiamo appena creato (ed inserito in un archivio compresso) dovremo andare ad attivarlo nel pannello di gestione dei plugin poiché Joomla di default non pubblica automaticamente i nuovi plugin installati.
Inoltre è importante ricordare che se la registrazione utenti non è attiva, non sarà possibile usufruire del plugin appena creato, in quanto esso agisce solamente nel form di registrazione utenti.

Sperando che l'articolo sia piaciuto, voglio ricordare che la creazione di un plugin personalizzato è una pratica (o un work around) migliore della modifica dei file del core di Joomla. Sicuramente la creazione di un plugin richiede più tempo, ma darà modo al sito di essere stabile e di poter essere aggiornato senza perdere le modifiche effettuate.

 

CommentaCommenta questo articolo sul forum


Ho scritto e condiviso questo articolo su Joomla.it, fallo anche tu. Invia ora un nuovo articolo!
Gregorio Nuti
Alcune informazioni su di me:
Sviluppatore Joomla! dal 2011 per lavoro e per passione.


Ho anche scritto:
         ✔ diventa autore su Joomla.it

Ultima versione di Joomla!®

downloadVer. 3.7.4 Stabile Italiana
Data di rilascio: 25 Luglio 2017
(leggi la notizia Demo online

Le migliori estensioni gratuite

Un elenco aggiornato con i link a più di 100 estensioni fra componenti, moduli e plugin gratuiti per Joomla! 3

Manuale in italiano

Manuale in italianoPer conoscere meglio Joomla!, le sue caratteristiche ed il metodo di utilizzo leggi il manuale tradotto in italiano.

Molto utili anche le risposte alle domande più frequenti: FAQ

Sicurezza del proprio sito Joomla!Leggi anche: Nozioni sulla sicurezza del proprio sito

Autori di articoli recenti

Invia un articolo!Scrivi un articolo su Joomla.it e ricevi i ricavi dalle pubblicità di Google Adsense!
Segui queste istruzioni, condividi e collabora con la community. L'elenco degli autori attivi sul sito.

Libri consigliati

Torna su

Joomla.it sui Social Network

JoomlaDay Italia

JoomlaDay

Newsletter

Inserisci qui la tua e.mail: