Geeklog France

Custom registration

L'enregistrement classique d'un membre avec le cms Geeklog s'effectue à l'aide d'un formulaire dans lequel le futur membre saisie son nom de connexion (login) et son adresse email. L'enregistrement personnalisé des membres vous permet de récupérer des informations complémentaires.

La mise en place de l'enregistrement personnalisé se déroule en 3 étapes. Dans l'exemple suivant vous allez proposer à vos futurs membres de saisir leur vrai nom en plus du nom de connexion et de leur adresse email, et choisir de recevoir ou non le daily digest de votre site, qui est l'avis de publication de nouveaux articles.

La partie html

Dans un premier temps, vous avez besoin d'un formulaire. Ajouter un dossier custom dans votre dossier public_html/layout/yourtheme, et placer dans ce nouveau dossier le fichier memberdetail.html.

memberdetail.html

{startblock}
<p>{message}</p>
<form action="{post_url}" method="post">
    <table cellspacing="0" cellpadding="2" width="100%">
        <tr>
            <td align="right" style="vertical-align:middle;padding-right:10px;"><b>{USERNAME}</b><br{xhtml}><small style="color:#676767">{USERNAME_HELP}</small></td>
            <td align="left" valign="middle"><input type="text" name="username" size="16" maxlength="16" value="{username}"{xhtml}></td>
        </tr>
        {passwd_input}
        <tr>
            <td align="right" style="vertical-align:middle;padding-right:10px;"><b>{FULLNAME}</b><br{xhtml}><small style="color:#676767">{FULLNAME_HELP}</small></td>
            <td align="left" valign="middle"><input type="text" name="fullname" size="32" maxlength="80" value="{fullname}"{xhtml}></td>
        </tr>
        <tr>
            <td align="right" style="vertical-align:middle;padding-right:10px;"><b>{EMAIL}</b><br{xhtml}><small style="color:#676767">{EMAIL_HELP}</small></td>
            <td align="left" valign="middle"><input type="text" name="email" size="32" maxlength="96" value="{email}"{xhtml}></td>
        </tr>
        <tr>
            <td align="right" style="vertical-align:middle;padding-right:10px;"><b>{EMAIL_CONF}</b><br{xhtml}><small style="color:#676767">{EMAIL_CONF_HELP}</small></td>
            <td align="left" valign="middle"><input type="text" name="email_conf" size="32" maxlength="96" value="{email_conf}"{xhtml}></td>
        </tr>
        <tr>
            <td align="right" style="vertical-align:middle;padding-right:10px;"><p><input type="checkbox" name="emailstories" checked="yes"{xhtml}></p></td>
            <td align="left" valign="middle"><p><b>{NEWSLETTER}</b><br{xhtml}><small style="color:#676767">{NEWSLETTER_HELP}</small></p></td>
        </tr>
        {captcha}
        <tr>
            <td align="center" colspan="3"><input type="hidden" name="uid" value="{user_id}"{xhtml}><hr{xhtml}><br{xhtml}>
            <input type="hidden" name="mode" value="{postmode}"{xhtml}>{submitbutton}</td>
        </tr>
    </table>
</form>
{endblock}

La partie php

Le code nécessaire est déjà existant en partie dans votre fichier system/lib-custom.php sous la forme d'un exemple. Il ne nous reste plus qu'à modifier 3 des fonctions.

function CUSTOM_userForm

Cette fonction affecte les variables linguistique de notre formulaire.

function CUSTOM_userForm ($msg = '')
{
    global $_CONF, $_TABLES, $LANG04;

    $retval = '';

    if (!empty ($msg) && ($msg != 'new')) {
        $retval .= COM_startBlock($LANG04[21]) . $msg . COM_endBlock();
    }

    $post_url = $_CONF['site_url'] . '/users.php';
    $postmode = 'create';
    $submitbutton = '<input type="submit" value="' . $LANG04[27] . '"' . XHTML . '>';
    $message = $LANG04[23];

    $user_templates = new Template ($_CONF['path_layout'] . 'custom');
    $user_templates->set_file('memberdetail', 'memberdetail.thtml');
    $user_templates->set_var( 'xhtml', XHTML );
    $user_templates->set_var('site_url', $_CONF['site_url']);
    $user_templates->set_var('layout_url', $_CONF['layout_url']);
    $user_templates->set_var('post_url', $post_url);
    $user_templates->set_var('startblock', COM_startBlock($LANG04[22]));
    $user_templates->set_var('message', $message);

    $user_templates->set_var('USERNAME', $LANG04[2]);
    $user_templates->set_var('USERNAME_HELP', $LANG04[87]);
    $username = '';
    if (isset ($_POST['username'])) {
        $username = COM_applyFilter ($_POST['username']);
    }
    $user_templates->set_var('username', $username);

    $user_templates->set_var('EMAIL', $LANG04[5]);
    $user_templates->set_var('EMAIL_HELP', $LANG04[33]);
    $email = '';
    if (isset ($_POST['email'])) {
        $email = COM_applyFilter ($_POST['email']);
    }
    $user_templates->set_var('email', $email);

    $user_templates->set_var('EMAIL_CONF', $LANG04[124]);
    $user_templates->set_var('EMAIL_CONF_HELP', $LANG04[126]);
    $email_conf = '';
    if (isset ($_POST['email_conf'])) {
        $email_conf = COM_applyFilter ($_POST['email_conf']);
    }
    $user_templates->set_var('email_conf', $email_conf);

    $user_templates->set_var('FULLNAME', $LANG04[3]);
    $user_templates->set_var('FULLNAME_HELP', $LANG04[34]);
    $fullname = '';
    if (isset ($_POST['fullname'])) {
        $fullname = strip_tags ($_POST['fullname']);
    }
    $user_templates->set_var('fullname', $fullname);

    $user_templates->set_var('NEWSLETTER', 'Je souhaite recevoir la newsletter du site');
    $user_templates->set_var('NEWSLETTER_HELP', 'Modifiable par la suite dans mon compte');
    $user_templates->set_var('user_id', $user);
    $user_templates->set_var('postmode', $postmode);
    $user_templates->set_var('submitbutton', $submitbutton);
    $user_templates->set_var('endblock', COM_endBlock());
    /*
     * Check to see if CAPTCHA plugin is installed and enabled
     * if yes, call the function to add the CAPTCHA image.
     */
    if ( function_exists('plugin_templatesetvars_captcha') ) {
        plugin_templatesetvars_captcha('registration', $user_templates);
    }
    $user_templates->parse('output', 'memberdetail');
    $retval .= $user_templates->finish($user_templates->get_var('output'));

    return $retval;
}


function CUSTOM_userCheck

Dans cette fonction nous déactivons la vérification du nom du futur membre car nous ne souhaitons pas rendre cette information obligatoire.

function CUSTOM_userCheck ($username, $email='')
{
    global $MESSAGE;

    $retval = '';

    // Example, check that the full name has been entered
    // and complain if it's missing
    /*if (empty($_POST['fullname'])) {
        $retval['string'] = $MESSAGE['401'];
        $retval['number'] = 401;
    }*/

    return $retval;
}


function CUSTOM-userCreate

Cette fonction prend en charge l'enregistrement des données complémentaires recueillies comme le véritable nom du membre et son choix de recevoir ou non le daily digest.

function CUSTOM_userCreate ($uid,$bulkimport=false)
{
    global $_CONF, $_TABLES;

    // Ensure all data is prepared correctly before inserts, quotes may need to
    // be escaped with addslashes()
    $email = '';
    if (isset ($_POST['email'])) {
        $email = COM_applyFilter ($_POST['email']);
        $email = addslashes ($email);
    }

    $fullname = '';
    if (isset ($_POST['fullname'])) {
        // COM_applyFilter would strip special characters, e.g. quotes, so
        // we only strip HTML
        $fullname = strip_tags ($_POST['fullname']);
        $fullname = addslashes ($fullname);
    }

    if (isset ($_POST['emailstories']) && $_POST['emailstories'] == true) {
        DB_query("UPDATE {$_TABLES['userindex']} SET etids = '' WHERE uid = $uid");
    } else {
        DB_query("UPDATE {$_TABLES['userindex']} SET etids = '-' WHERE uid = $uid");
    }


    // Note: In this case, we can trust the $uid variable to contain the new account's uid.
    DB_query("UPDATE {$_TABLES['users']} SET email = '$email', fullname = '$fullname' WHERE uid = $uid");

    return true;
}

Activer la fonction

Il ne reste plus qu'à activer la fonction. Pour cela, rendez vous dans l'espace de configuration en ligne, rubrique “Membres et contributions”, et affecter la valeur “Oui” à “Permettre l'enregistrement personnalisé”.

Connecté en tant que : Guest (Guest)
astuces/custom-registration.txt · Dernière modification: 2012/03/23 22:27 par ::Ben
 

Download geeklog

Last version 1.8.1

Espace Membre





Devenir membre
Enregistrez-vous

Mot de passe oublié ?

Change language

Categories

  • Geeklog (38)
  • Plugins (53)
  • Thèmes (17)
  • My cart

    Votre panier (0 article)

    Votre panier est vide!

    0.00 EUR

    Visual Theme Switcher

    Test out available themes by selecting from one of the 6 available themes or give the Visual Switcher a try:

    Follow us on twitter

    En ligne

    Visiteurs: 8