Ajouter des champs étendus sur votre forum

Introduction









Le présent tutoriel a pour but de vous aider à ajouter simplement des champs personnalisés dans les messages du forum.



Nous vous montrerons la procédure pas à pas simplement, en mettant en place un champ Facebook.



A la fin de cet article, vous devriez obtenir ce résultat :



champsupp3











Créer le champ étendu









Tout d'abord, il va falloir créer un champ étendu. Rendez-vous donc dans le panneau d'administration, menu 'Utilisateurs', 'Champs étendus' => 'Ajouter'



Remplissez le champ comme vous le souhaitez. Pour notre champ Facebook, j'ai rempli ainsi :



champsupp1



Ensuite, n'oubliez pas de valider (;







L' image









Dans mon exemple, j'ai utilisé cette image : user_fb. C'est elle qui sera utilisée pour permettre aux usagers de cliquer et atterrir sur la page Facebook de l'auteur du message.



Vous pouvez bien entendu la récupérer, pour ce un petit clic droit 'Enregistrer l'image sous'.







Je l'ai appelée 'user_fb.png'. Son nom nous sera important pour la suite. Nous allons maintenant la placer de manière à ce qu'elle soit utilisable par le module forum.



Copiez donc votre image, et collez la dans le dossier 'templates/nom_de_votre_theme/images/french'



Si vous souhaiter utiliser votre site en anglais, répétez l'opération avec le dossier 'english'











Récupération du champ étendu









Avant de pouvoir afficher notre petit bouton, nous allons déjà en récupérer le contenu. Pour cela, ouvrez le fichier 'forum/topic.php'.



Allez à la ligne 205 (oui, le gros pavé (; ). Toute cette partie qui peut paraître très abstraite pour des gens normaux est chargée de questionner la base de données. Elle récupère entre autres les messages du sujet, mais aussi la signature, l'avatar du membre qui les ont postés.



Ajoutons donc le code qui nous permettra d'obtenir notre champ :







Cherchez dans cette ligne le code suivant :



Code PHP :
ext_field.user_sign,








A la suite, ajoutez-y simplement :



Code PHP :
 ext_field.f_facebook,




Pour les curieux :



ext_field : Alias donné à la table 'member_extended_fields' dans la requête SQL



f_facebook : nom du champ étendu précédé de 'f_', utilisé par PHPBoost pour gérer les champs personnalisés








Ensuite, passons à la ligne 376 :



Code PHP :
$Template->assign_block_vars('msg', array(








Toute cette partie ( jusqu'à la ligne 418) est très importante : Elle passe les variables PHP récupérées dans la base de données jusqu'au template (fichier .TPL). Nous allons donc en profiter pour passer également notre champ facebook :







En dessous de la ligne 397 (qui commence par ''USER_WEB' => (!empty($row[' ), ajoutez ceci :



Code PHP :
'USER_FB' => (!empty($row['f_facebook'])) ? '<a href="'. $row['f_facebook'] . '"><img src="../templates/' . get_utheme() . '/images/' . get_ulang() . '/user_fb.png" /></a>' : '',








Pour les téméraires :



USER_FB sera le nom de la variable dans le template. A noter que cette variable sera stockée dans le block 'msg', qui passera en boucle chaque message du sujet.



$row['f_facebook'] contient le champ facebook de l'auteur du message, récupéré dans la BDD.



Le code teste si le champ étendu en question est rempli ou pas. S'il l'est, alors on affecte à la variable 'USER_FB' le lien et l'image. Sinon, une chaîne vide lui est retournée.



Remarquez également la présence du nom de notre image (;











Sauvegardez votre fichier et passons à la dernière étape.











L'affichage









Jusqu'à présent, nous avons préparé et récupéré notre champ étendu. Nous allons pouvoir maintenant l'afficher sur chaque message du forum.



Pour ce, ouvrez le fichier 'forum\templates\forum_topic.tpl' et allez à la ligne 296 :



Code TPL :
{msg.USER_PM} {msg.USER_MAIL} {msg.USER_MSN} {msg.USER_YAHOO} {msg.USER_WEB}








Il nous suffit à présent d'insérer notre variable. Ajoutez donc à la suite :



Code TPL :
 {msg.USER_FB}








Sauvegardez votre fichier.











Résultat









En naviguant dans les messages de votre forum, vous devriez maintenant voir apparaître la petite icône Facebook comme la mienne :



champsupp3











Ca ne fonctionne pas !









Si ça ne fonctionne pas, pas de panique.



Assurez-vous d'avoir :