[DOC] Utiliser les champs de profil personalisés

Les tutoriels pour bien utiliser phpBB3.

[DOC] Utiliser les champs de profil personalisés

Messagepar lolovoisin » Ven 9 Jan 2009 10:22

» Utiliser les champs de profil personnalisés

Ce tutoriel a pour but de vous guider afin de pouvoir afficher les champs de profil personnalisés sur votre forum. Ce tutoriel n'est valable QUE pour les styles basés sur PROSILVER et PROSILVER lui même.

1- Créer un champ de profils personnalisé.
    Commençons tout d'abord par créer un champ de test.
    Allez dans votre panneau d'administration, onglet "Utilisateurs et groupes" et puis sur le menu à gauche, cliquez sur "Champs de profil personnalisés".
    Vous aller avoir cette fenêtre:
Image
    Dans la zone de texte, mettez le nom du champ (nous l'appellerons "test" pour ce tutoriel)
    Puis dans le menu déroulant à coté, nous choisirons "Champ de texte simple".
    Enfin cliquez sur "Créer un nouveau champ"
    Nous arrivons sur la deuxième fenêtre.
Image
    Explication des champs:
    1- Ceci est le type de champ, défini lors de la création et non modifiable.
    2- Nom de votre champ dans la base de données. Ce n'est pas ce qui sera affiché, mais un nom qui défini ce champ de profil personnalisé (essayez d'éviter les accent et autres caractères "exotique". Donnez lui un nom facile à retenir en rapport avec le champs. Ce nom sera utile plus tard pour afficher le champ dans la liste des membres.
    3- Permet d'afficher ou non, le champ là ou c'est autorisé
    4 5 6 7- Les textes d'explications sont assez simple à comprendre, je ne vais pas répéter.
    8- Le titre du champ affiché à l'utilisateur (à la différence du nom du champ qui lui est une information interne pour identifier votre champ dans la base de données)
    9- La description du champ.
    10- La valeur par défaut qui sera affiché.

    Pour notre exemple,nous mettrons OUI pour le point 3 et nous cocherons la case du point 4.

    Puis cliquez sur "Options particulières du type de profil" en bas de page.
Image
    Cette fenêtre permet de définir la longueur du champ, le nombre minimum et maximum de caractères, et les caractères autorisés (tous, alphanumériques, chiffre..)

    Cliquez maintenant sur "Options particulières de langue"
Image
    Ici nous pouvons définir un nom, une description et une valeur par défaut pour vos autres langues. Ici j'ai de l'anglais donc je peux mettre des valeurs différentes pour la langue anglaise.
    Enfin cliquez sur "Sauvegarder" pour sauvegarder votre champ de profil personnalisé.

    Il va aussi falloir gérer l'affichage de champ de profil.
    Pour cela, toujours dans le panneau d'administration, onglet "général", puis dans le menu gauche cliquez sur "Paramètres de charge".
    Tout en bas de la page, vous pouvez choisir ou sera affiché le ou les champs de profils personnalisés que vous avez créés.
    Le premier permet d'afficher le champ dans la liste des membres (nous y reviendrons plus tard), le deuxième dans le profil général (lorsque l'on clique sur le nom d'un membre) et le dernier dans les pages de sujets.
    Pour les besoins du tutoriel, mettez tout à OUI.
    Vous pourrez désactiver les affichages plus tard.

2- Afficher le champ dans les pages du sujets et dans le profil général.
    Pour cela rendez-vous dans votre panneau d'utilisateur.
    Puis choisissez l'onglet "profil". Vous devriez voir un nouveau champ appelé test. Si vous avez mis une valeur par défaut, vous verrez aussi le texte en face du nom du champ.
    Mettez la valeur que vous désirez, puis cliquez sur "envoyer" en bas de la page.
    Puis rendez vous sur un de vos sujet et sous la date d'inscription, vous devriez voir votre nouveau champ "test" avec en face la valeur que vous venez de mettre.
    Voilà vous avez un champ de profil personnalisé.
    Pour ne plus montrer ce champ, il suffit de mettre NON en face de "Autoriser les styles à afficher les champs personnalisés dans la liste des membres" depuis le panneau d'administration, onglet "Général", "Paramètres de charge".

    Si vous cliquez sur votre nom, vous aller arriver sur la page de votre profil.
    Là aussi vous devriez voir en haut de page, sous le "Groupes d’utilisateurs", votre nouveau champ personnalisé.
    Pour ne plus montrer ce champ, il suffit de mettre NON en face de "Afficher les champs personnalisés dans les profils d’utilisateur" depuis le panneau d'administration, onglet "Général", "Paramètres de charge".

    NB: Tant que vous n'aurez pas validé le profil dans votre panneau utilisateur, onglet profil, le champ n'apparaitra pas dans les sujets et dans le profil des membres. Il faut obligatoirement valider votre profil pour le mettre à jour.

3- Afficher le champ dans la liste des membres.
    Cette partie là est un peu plus compliqué et demande de modifier le code.

    Tout d'abord nous allons rajouter la clé de langue pour votre champ personnalisé.
    Pour cela il faut:
    ouvrir /language/fr/memberlist.php
    chercher:
    Code: Tout sélectionner
       'SORT_POST_COUNT'   => 'Nombre de messages',

    aprés rajouter
    Code: Tout sélectionner
       'TEST'   => 'Mon champ test',


    Remarque: Dans le cas du tutoriel, la clé de langue est "test", donc je l'ai placé dans l'ordre alphabétique, mais dans l'absolu, vous pouvez placez la clé de langue ou vous voulez

    Puis enregistrez le fichier en UTF8 SANS BOM.
    Pour ceci utilisez notepad++ pour ouvrir le fichier, puis sous le menu "format" vous cliquez sur "convertir UTF8 (sans BOM) puis vous sauvegardez.
    Pour information, TOUS les fichiers de langue doivent être encodé dans ce format, et de même pour les fichiers html.

    Ensuite, nous allons modifier l'affichage de la liste des membres (J'ai décidé de placer l'affichage après le nombre de message, mais après à vous de voir si vous voulez le placer ailleurs, il suffira de déplacer les lignes à insérer ci-dessous.)
    Pour cela il faut:
    ouvrir /style/{votre_style}/template/memberlist_body.html
    chercher (Attention, il y a deux lignes, c'est a faire sur la première ligne au environ de la ligne 83)
    Code: Tout sélectionner
    <th><a href="{U_SORT_POSTS}#memberlist">{L_POSTS}</a></th>

    aprés ajouter
    Code: Tout sélectionner
    <th>{L_TEST}</th>

    (Si votre clé de langue est différente et s'appelle toto par exemple, vous mettrez L_TOTO à la place ;) )
    puis chercher:
    Code: Tout sélectionner
    <td class="posts"><!-- IF memberrow.POSTS --><a href="{memberrow.U_SEARCH_USER}" title="{L_SEARCH_USER_POSTS}">{memberrow.POSTS}</a><!-- ELSE -->{memberrow.POSTS}<!-- ENDIF --></td>

    et après ajouter:
    Code: Tout sélectionner
    <td><!-- IF memberrow.PROFILE_TEST_VALUE -->{memberrow.PROFILE_TEST_VALUE}<!-- ELSE -->&nbsp;<!-- ENDIF --></td>


    Notez bien que les noms des champs personnalisés sont en MAJUSCULES et sont identiques au nom que vous avez donné au champ lors de sa création. (voir explication du point 2 à la deuxième image au dessus). Vous savez maintenant pourquoi il vaut mieux utiliser des identifications de champ simple ;)
    Si par exemple votre champ personnalisé s'appelle toto il faudra mettre:
    Code: Tout sélectionner
    <td class="posts"><!-- IF memberrow.PROFILE_TOTO_VALUE -->{memberrow.PROFILE_TOTO_VALUE}<!-- ELSE -->&nbsp;<!-- ENDIF --></td>


    Puis sous votre panneau d'administration, onglet "Général", cliquez sur "Exécuter maintenant" en face de "vider le cache".
    Puis il vous suffit de cliquer sur "Membres" en haut de votre forum pour voir la nouvelle colonne apparaitre avec les champs personnalisés.

4- Aller plus loin dans l'affichage des champs personnalisés
Maintenant que nous avons vu comment afficher tout cela, il peut y avoir quelques améliorations à faire suivant vos goûts.

    A- Centrer le champ personnalisé dans la liste des membres
    Pour cela nous allons créer une classe particulière que nous appellerons champ et que nous mettrons sur le champ personnalisé.
    Ouvrir /style/{votre_style}/theme/common.css
    chercher (environ ligne 399)
    Code: Tout sélectionner
    table.table1 .info      { text-align: left; width: 30%; }

    aprés ajouter:
    Code: Tout sélectionner
    table.table1 .champ { text-align: center; }


    Puis ouvrir /style/{votre_style}/template/memberlist_body.html
    chercher:
    Code: Tout sélectionner
    <td><!-- IF memberrow.PROFILE_TEST_VALUE -->{memberrow.PROFILE_TEST_VALUE}<!-- ELSE -->&nbsp;<!-- ENDIF --></td>

    remplacer par:
    Code: Tout sélectionner
    <td class="champ"><!-- IF memberrow.PROFILE_TEST_VALUE -->{memberrow.PROFILE_TEST_VALUE}<!-- ELSE -->&nbsp;<!-- ENDIF --></td>


    Une fois cela fait, allez sous le panneau d'administration, onglet style, puis cliquez sur thème dans le menu de gauche, et "rafraichir" en face du nom de votre style.
    Puis cliquez sur l'onglet "Général", et cliquez sur "Exécuter maintenant" en face de "Vider le cache".
    Voilà maintenant votre champ est centré dans votre liste de membre.

    B- Déplacer le champ personnalisé dans le profil général du membre
    Comme nous l'avons vu au point 2, le champ personnalisé apparait sous le groupe, en haut de la page de profil.
    C'est une bonne chose, mais il est possible que vous le préfériez sous le bloc (site internet, MP, ...).
    Cela se passe en deux temps:
    Premièrement on désactive l'affichage du champ personnalisé du haut du profile.
    Pour se faire, ouvrir /style/{votre_style}/template/memberlist_view.html
    chercher:
    Code: Tout sélectionner
    <!-- BEGIN custom_fields --><dt>{custom_fields.PROFILE_FIELD_NAME}:</dt> <dd>{custom_fields.PROFILE_FIELD_VALUE}</dd><!-- END custom_fields -->

    remplacer par
    Code: Tout sélectionner
    <!-- BEGIN custom_fields --><!-- <dt>{custom_fields.PROFILE_FIELD_NAME}:</dt> <dd>{custom_fields.PROFILE_FIELD_VALUE}</dd> --><!-- END custom_fields -->

    Puis nous allons replacer le champ personnalisé dans le bloc de gauche:
    Toujours dans le même fichier, chercher:
    Code: Tout sélectionner
    <!-- IF U_JABBER and S_JABBER_ENABLED --><dt>{L_JABBER}:</dt> <dd><a href="{U_JABBER}" onclick="popup(this.href, 550, 320); return false;">{L_SEND_JABBER_MESSAGE}</a></dd><!-- ELSEIF USER_JABBER --><dt>{L_JABBER}:</dt> <dd>{USER_JABBER}</dd><!-- ENDIF -->

    Après ajouter:
    Code: Tout sélectionner
    <!-- BEGIN custom_fields -->
             <!-- IF postrow.custom_fields.PROFILE_FIELD_NAME eq "test" --><dt>{postrow.custom_fields.PROFILE_FIELD_NAME}:</dt> <dd>{postrow.custom_fields.PROFILE_FIELD_VALUE}</dd><!-- ENDIF -->
            <!-- END custom_fields -->


    Et bien sur il faut vider le cache du forum (comme pour toute manipulation sur un fichier html) pour voir apparaitre les modifications. Mais bon ça vous commencez à le savoir maintenant ;)
    Explication: On rajoute un bloc pour tous les champs de profils personnalisé. La structure est la même pour tous les champs que vous voudrez rajouter.
    Si vous avez un deuxième champ toto à rajouter, il faudra mettre juste avant le
    Code: Tout sélectionner
    <!-- END custom_fields -->
    le code suivant:
    Code: Tout sélectionner
    <!-- IF postrow.custom_fields.PROFILE_FIELD_NAME eq "toto" --><dt>{postrow.custom_fields.PROFILE_FIELD_NAME}:</dt> <dd>{postrow.custom_fields.PROFILE_FIELD_VALUE}</dd><!-- ENDIF -->


    NOTEZ BIEN QUE LES MAJUSCULES/MINUSCULES ONT LEUR IMPORTANCE !!!
    Si vous avez appelé votre champ test ne mettez pas TEST.

    Comme nous n'avons plus d'affichage global de vos champs personnalisé, il faudra rajouter ce code pour chacun de vos champ personnalisé, sinon, il n'apparaitrons pas. :wink:

    C- Déplacer le champ personnalisé dans le sujet
    La aussi il est possible de mettre un champ personnalisé ailleurs qu'à la fin de la liste de votre profil.
    Admettons que nous voulions mettre notre champ personnalisé entre "messages" et "inscriptions" dans la liste sous votre avatar. Là aussi cela se passe en deux temps.
    Premièrement on désactive l'affichage global.
    ouvrir /styles/{VOTRE_STYLE}/template/viewtopic_body.html
    chercher:
    Code: Tout sélectionner
    <!-- BEGIN custom_fields -->
             <dd><strong>{postrow.custom_fields.PROFILE_FIELD_NAME}:</strong> {postrow.custom_fields.PROFILE_FIELD_VALUE}</dd>
          <!-- END custom_fields -->

    remplacez par:
    Code: Tout sélectionner
    <!-- BEGIN custom_fields -->
             <!-- <dd><strong>{postrow.custom_fields.PROFILE_FIELD_NAME}:</strong> {postrow.custom_fields.PROFILE_FIELD_VALUE}</dd> -->
          <!-- END custom_fields -->

    puis chercher:
    Code: Tout sélectionner
    <!-- IF postrow.POSTER_POSTS != '' --><dd><strong>{L_POSTS}:</strong> {postrow.POSTER_POSTS}</dd><!-- ENDIF -->

    aprés rajouter:
    Code: Tout sélectionner
    <!-- IF postrow.S_PROFILE_TEST -->
             <dd><strong>{postrow.PROFILE_TEST_NAME}:</strong> {postrow.PROFILE_TEST_VALUE}</dd>
          <!-- ENDIF -->


    ATTENTION: Ici, contrairement au cas précédent, le nom du champ DOIT ÊTRE EN MAJUSCULES et ce même si vous avez donné un nom en minuscules lors de la création du champ.

    Puis videz le cache et maintenant votre champ est entre "Messages" et "Inscriptions".
    Et la aussi ce bloc est à répéter autant de fois que vous avez de champ de profil personnalisé.
Avatar de l’utilisateur
lolovoisin
Administrateur du site
Administrateur du site
 
Messages: 408
Inscription: Ven 28 Nov 2008 10:18

Retourner vers Tutoriels d'utilisation

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron