MyBB.support, le portail francophone de MyBB
[Tutoriel] Préremplir le champ de message. - Version imprimable

+- MyBB.support, le portail francophone de MyBB (http://mybb.fr)
+-- Forum : MyBB.fr (http://mybb.fr/forum-1.html)
+--- Forum : Tutoriels (http://mybb.fr/forum-19.html)
+--- Sujet : [Tutoriel] Préremplir le champ de message. (/thread-5062.html)

Pages : 1 2


[Tutoriel] Préremplir le champ de message. - Saphir - 27-12-2011

Dans ce tutoriel, nous allons apprendre à préremplir le champ d'écriture de messages.

Ceci vous permet de proposer un modèle de message à vos membres.
Vous pouvez utiliser ce modèle, soit sur la page de création d'une nouvelle discussion, soit sur la page de rédaction d'une réponse à une discussion existante, soit aux deux.
Vous pouvez également restreindre l'affichage de ce modèle à certains sous-forums uniquement, mais pour cela, il vous faudra un plugin permettant d'utiliser le code PHP dans les templates (téléchargeable ici : http://mybbhacks.zingaburga.com/showthread.php?tid=260).

Étape 1 : Appliquer le préremplissage à un ou plusieurs sous-forums spécifiques.

Si vous souhaitez que le préremplissage soit appliqué à toutes les nouvelles discussions ou nouvelles réponses, ignorez cette étape.

Vérifiez que le plugin cité précédemment est installé et activé.

Relevez les identifiants des sous-forums dans lesquels vous souhaitez activer le préremplissage en vous rendant par exemple dans la liste des sous-forums du panneau d'administration. En cliquant sur le sous-forum choisi, vous verrez apparaître à la fin de la barre d'adresse "fid=X", avec un nombre à la place du X : il s'agit de l'identifiant en question.

Pour ma part, j'ai créé un sous-forum "Présentations", et il a pour identifiant 3.

Si vous souhaitez activer le préremplissage dans le cas de l'ouverture d'une nouvelle discussion, vous devrez modifier le template "newthread" ; si vous souhaitez activer le préremplissage dans le cas d'une réponse à une discussion existante, vous devrez modifier le template "newreply".
Évidemment, si vous souhaitez l'activer dans les deux cas, il faudra modifier les deux templates.

Localisez le code suivant :
Code PHP :
<textarea name="message" id="message" rows="20" cols="70" tabindex="2">{$message}</textarea
(Pour une raison qui m'échappe, sur le template "newreply", par défaut, il y a une espace après "tabindex="2"" qui n'est pas dans "newthread"...)

Dans les codes ci-dessous, le "ICI" montre une position qui sera utilisée dans la seconde étape.

Pour appliquer le préremplissage à un seul sous-forum, remplacez cette ligne par :
Code PHP :
<textarea id="message" name="message" rows="20" cols="70" tabindex="2"><if $_GET['fid'] == X then>ICI</if>{$message}</textarea

Pour appliquer un préremplissage identique à plusieurs sous-forums, utilisez la ligne ci-dessous :
Code PHP :
<textarea id="message" name="message" rows="20" cols="70" tabindex="2"><if $_GET['fid'] == OR $_GET['fid'] == Y then>ICI</if>{$message}</textarea
Vous pouvez ajouter des " OR $_GET['fid'] == Z" à volonté entre la position du Y et le "then".

Pour appliquer un préremplissage différent pour plusieurs sous-forums, utilisez le code suivant :
Code PHP :
<textarea id="message" name="message" rows="20" cols="70" tabindex="2"><if $_GET['fid'] == X then>ICI<elseif $_GET['fid'] == Y then>ICI</if>{$message}</textarea
Vous pouvez rajouter des "<elseif $_GET['fid'] == Z then>ICI" à volonté en les plaçant juste avant le "</if>" pour augmenter le nombre de cas.
Si vous avez quelques notions de PHP, vous pouvez également combiner les deux types de codes pour appliquer un certain remplissage à deux sous-forums et un autre à un autre sous-forum, comme sur l'exemple ci-dessous :
Code PHP :
<textarea id="message" name="message" rows="20" cols="70" tabindex="2"><if $_GET['fid'] == OR $_GET['fid'] == Y then>ICI<elseif $_GET['fid'] == Z then>ICI</if>{$message}</textarea

Étape 2 : Choisir le texte qui préremplira le champ.

Ici aussi, si vous souhaitez activer le préremplissage dans le cas de l'ouverture d'une nouvelle discussion, vous devrez modifier le template "newthread" ; si vous souhaitez activer le préremplissage dans le cas d'une réponse à une discussion existante, vous devrez modifier le template "newreply".
Évidemment, si vous souhaitez l'activer dans les deux cas, il faudra modifier les deux templates.

Si vous n'avez pas suivi la première étape, la position qui sera utilisée dans la suite du tutoriel est celle-ci :
Code PHP :
<textarea name="message" id="message" rows="20" cols="70" tabindex="2">ICI{$message}</textarea
Si vous avez suivi la première étape, il peut y avoir un ou plusieurs ICI, auquel cas c'est ceux-ci qu'il faudra utiliser.

À la place du ICI, vous allez pouvoir écrire le texte de votre choix.
Le texte que vous allez entrer sera interpréter comme du texte simple, le code HTML sera donc affiché tel quel.

Mon Exemple : Une présentation en bonne et due forme.

J'ai mis le tutoriel en oeuvre en même temps que je l'ai écrit sur mon forum de test.

Lors de la création d'une nouvelle discussion dans le sous-forum "Présentations" (identifiant 3), je veux qu'un "squelette" de présentation soit disponible pour que la personne qui veut se présenter n'ait plus qu'à entrer les informations de son choix.

Je vais vous donner mon template "newthread" complet :
Code PHP :
<html>
<
head>
<
title>{$lang->newthread_in}</title>
{
$headerinclude}
<
script type="text/javascript" src="jscripts/post.js?ver=1400"></script>
</head>
<body>
{$header}
{$preview}
{$thread_errors}
{$attacherror}
<form action="newthread.php?fid={$fid}&amp;processed=1" method="post" enctype="multipart/form-data" name="input">
<input type="hidden" name="my_post_key" value="{$mybb->post_code}" />
<table border="0" cellspacing="{$theme['borderwidth']}" cellpadding="{$theme['tablespace']}" class="tborder">
<tr>
<td class="thead" colspan="2"><strong>{$lang->post_new_thread}</strong></td>
</tr>
{$loginbox}
<tr>
<td class="trow2" width="20%"><strong>{$lang->thread_subject}</strong></td>
<td class="trow2">{$prefixselect}<input type="text" class="textbox" name="subject" size="40" maxlength="85" value="<if $_GET['fid'] == 3 AND !($subject) then>Présentation de {$mybb->user['username']}<else/>{$subject}</if>" tabindex="1" /></td>
</tr>
{$posticons}
<tr>
<td class="trow2" valign="top"><strong>{$lang->your_message}</strong>{$smilieinserter}</td>
<td class="trow2">
<textarea name="message" id="message" rows="20" cols="70" tabindex="2"><if $_GET['fid'] == 3 AND !($message) then>Pseudonyme : {$mybb->user['username']}
Prénom : 
Nom : 
Âge : 
Sexe : 
Ville : 
Présentation :
<else/>{$message}</if></textarea>
{$codebuttons}
{$multiquote_external}
</td>
</tr>
<tr>
<td class="trow1" valign="top"><strong>{$lang->post_options}</strong></td>
<td class="trow1"><span class="smalltext">
<label><input type="checkbox" class="checkbox" name="postoptions[signature]" value="1" tabindex="7"{$postoptionschecked['signature']} /> {$lang->options_sig}</label>
{$disablesmilies}</span></td>
</tr>
{$modoptions}
{$subscriptionmethod}
{$pollbox}
{$captcha}
</table>
{$attachbox}
<br />
<div style="text-align:center"><input type="submit" class="button" name="submit" value="{$lang->post_thread}" tabindex="4" accesskey="s" />  <input type="submit" class="button" name="previewpost" value="{$lang->preview_post}" tabindex="5" />{$savedraftbutton}</div>
<input type="hidden" name="action" value="do_newthread" />
<input type="hidden" name="posthash" value="{$posthash}" />
<input type="hidden" name="attachmentaid" value="" />
<input type="hidden" name="attachmentact" value="" />
<input type="hidden" name="quoted_ids" value="{$quoted_ids}" />
<input type="hidden" name="tid" value="{$tid}" />
{$editdraftpid}
</form>
{$forumrules}
{$footer}
</body>
</html> 
Comme vous pouvez le constater, il y a quelques petites choses en plus, en réalité, je lui ai demandé de n'afficher le préremplissage que s'il n'y a rien de mieux à afficher : cela permet, lorsque l'utilisateur a demandé une prévisualisation de son message, d'afficher le texte qu'il avait précédemment entré au lieu du squelette vide.

Ceci n'est pas réalisable sans le plugin nécessaire pour l'étape 1, et j'ai préféré ne pas vous l'apprendre pour éviter d'embrouiller les plus néophytes d'entre vous. Les personnes ayant des bases en PHP comprendront aisément ce bout de code.

J'ai également utilisé un code similaire pour préremplir le titre du sujet, si vous avez quelques connaissances, vous pouvez également vous en inspirer.

Enfin, {$mybb->user['username']} est remplacé par le nom de l'utilisateur, tout simplement ! Wink

Annexe : Petites traductions de code pour ceux qui veulent mieux comprendre...

Code PHP :
<td class="trow2">{$prefixselect}<input type="text" class="textbox" name="subject" size="40" maxlength="85" value="<if $_GET['fid'] == 3 AND !($subject) then>Présentation de {$mybb->user['username']}<else/>{$subject}</if>" tabindex="1" /></td
Cette ligne gère l'affichage des champs préfixe de discussion et titre du sujet.
Code PHP :
value="<if $_GET['fid'] == 3 AND !($subject) then>Présentation de {$mybb->user['username']}<else/>{$subject}</if>" 
Signifie que la valeur par défaut du champ titre du sujet est :
SI l'on se trouve dans le sous-forum ayant l'identifiant 3 ET que le sujet n'a pas déjà été précisé dans une prévisualisation précédente, ALORS, afficher "Présentation de {$mybb->user['username']}", SINON, afficher "{$subject}".
{$mybb->user['username']} est automatiquement remplacé par le nom de l'utilisateur et {$subject} par le sujet précisé dans la prévisualisation précédente.

Code PHP :
<textarea name="message" id="message" rows="20" cols="70" tabindex="2"><if $_GET['fid'] == AND !($messagethen>Pseudonyme : {$mybb->user['username']}
Prénom 
Nom 
Âge 
Sexe 
Ville 
Présentation :
<else/>{
$message}</if></textarea
Cette ligne gère l'affichage du champ texte du message. Elle détermine la taille du champ, mais définit aussi le texte par défaut du champ comme étant :
SI l'on se trouve dans le sous-forum ayant l'identifiant 3 ET que le message n'a pas déjà été précisé dans une prévisualisation précédente, ALORS, "Pseudonyme : {$mybb->user['username']}
Prénom :
Nom :
Âge :
Sexe :
Ville :
Présentation :
", SINON, "{$message}".
{$mybb->user['username']} est automatiquement remplacé par le nom de l'utilisateur et {$message} par le message précisé dans la prévisualisation précédente.

Captures d'Écran : L'affichage du squelette et un exemple de présentation utilisant le squelette.

La première capture d'écran vous montre que le squelette s'affiche effectivement lorsqu'on crée une nouvelle discussion dans le sous-forum "Présentations" (sinon, il ne s'affiche pas), y compris dans le titre de la discussion ("Présentation de Saphir").
[attachment=1042]


Conclusion

Voila, un tutoriel un peu long, mais il fallait au moins ça pour le détailler un minimum.

Si vous avez des questions ou des remarques, je reste à votre disposition !

[Image: 88x31.png]


RE: [Tutoriel] Préremplir le champ de message. - Lucifer - 27-12-2011

Merci du partage Saphir :d


RE: [Tutoriel] Préremplir le champ de message. - Ch00s3r - 28-01-2012

Merci du partage , je vais essayez ...


RE: [Tutoriel] Préremplir le champ de message. - Dr.Inconnu - 22-07-2012

Merci, cela marche Smile


RE: [Tutoriel] Préremplir le champ de message. - Razaru - 10-08-2012

Merci


RE: [Tutoriel] Préremplir le champ de message. - Saachaa - 12-08-2012

Bonjour,

J'ai tout suivi et installé le plugin, seul bémol :

[Image: 2MPPP.png]

J'ai bien vérifié et il est activé, un soucis dans le code ?

Wink


RE: [Tutoriel] Préremplir le champ de message. - Saphir - 12-08-2012

Bonsoir Saachaa.

Pouvez-vous me donner le code complet de votre template tel qu'il pose problème ?


RE: [Tutoriel] Préremplir le champ de message. - Saachaa - 13-08-2012

Bonjour Saphir,

Désolé du dérangement, aujourd'hui tout marche pour le mieux...

Je n'en vois pas la cause, mais tant mieux ! Désolé du dérangement Wink

A bientôt...


RE: [Tutoriel] Préremplir le champ de message. - Stylus - 16-08-2012

Désoler de crrytiquer ton travail mais c'est trop compliqué pour moi .

N'y à t'il pas un moyen plus facile du genre aller dans le panneau d'administration, configurer 2 3 truc et c'est bon ?


RE: [Tutoriel] Préremplir le champ de message. - Saphir - 16-08-2012

Non.

Si vous n'êtes pas capable de suivre un tutoriel, je vous invite à chercher un addon qui corresponde à vos besoin, ou à demander à un développeur d'en coder un, généralement, moyennant finance.


RE: [Tutoriel] Préremplir le champ de message. - Saachaa - 16-08-2012

N'ayant jamais administrer, je le trouve pour ma part très simple...

Il suffit de se mettre dedans même si au départ, cela donne réticence...




RE: [Tutoriel] Préremplir le champ de message. - badmetal - 18-01-2014

Bonjour,

Super ce Tutoriel, mais je viens de tester, alors au niveaux du prérenplisage du titre du post sa marche impeck, mais au niveaux du message rien ne s'affiche.

je vous et mis un imprime écran en pièce jointe Smile



RE: [Tutoriel] Préremplir le champ de message. - Saphir - 18-01-2014

Peut être parce que vous n'utilisez pas l'un des éditeurs par défaut de MyBB. Pouvez-vous me donner le code de votre template ?



RE: [Tutoriel] Préremplir le champ de message. - badmetal - 18-01-2014

Bonjour,

Merci pour votre réponse, voilà le code Smile



Code :
<head>
<title>{$lang->newthread_in}</title>
{$headerinclude}
<script type="text/javascript" src="jscripts/post.js?ver=1400"></script>
</head>
<body>
{$header}
{$preview}
{$thread_errors}
{$attacherror}
<form action="newthread.php?fid={$fid}&amp;processed=1" method="post" enctype="multipart/form-data" name="input">
<input type="hidden" name="my_post_key" value="{$mybb->post_code}" />
<table border="0" cellspacing="{$theme['borderwidth']}" cellpadding="{$theme['tablespace']}" class="tborder">
<tr>
<td class="thead" colspan="2"><strong>{$lang->post_new_thread}</strong></td>
</tr>
{$loginbox}
<tr>
<td class="trow2" width="20%"><strong>{$lang->thread_subject}</strong></td>
<td class="trow2">{$prefixselect}<input type="text" class="textbox" name="subject" size="40" maxlength="85" value="<if $_GET['fid'] == 16 AND !($subject) then>Présentation {$mybb->user['username']}<else/>{$subject}</if>" tabindex="1" />

</td>
</tr>
{$posticons}
<tr>
<td class="trow2" valign="top"><strong>{$lang->your_message}</strong>{$smilieinserter}</td>
<td class="trow2">
<textarea name="message" id="message" rows="20" cols="70" tabindex="2"><if $_GET['fid'] == 16 AND !($message) then>Pseudonyme : {$mybb->user['username']}
Prénom :
Nom :
Âge :
Sexe :
Ville :
Présentation :
<else/>{$message}</if></textarea>

{$codebuttons}
{$multiquote_external}
</td>
</tr><!-- InputTags --><tr>
<td class="trow2" width="20%"><strong>Tags:</strong><br /><span class="smalltext">écrire 5 mots minimal avec une virgule en chaque.</span></td>
<td class="trow2"><input type="text" class="textbox" name="tags" size="40" maxlength="85" value="{$mybb->input['tags']}" tabindex="1" /></td>
</tr><!-- /InputTags -->
<tr>
<td class="trow1" valign="top"><strong>{$lang->post_options}</strong></td>
<td class="trow1"><span class="smalltext">
{$option_signature}
{$disablesmilies}</span></td>
</tr>
{$modoptions}
{$subscriptionmethod}
{$pollbox}
{$captcha}
</table>
{$attachbox}
<br />
<div style="text-align:center"><input type="submit" class="button" name="submit" value="{$lang->post_thread}" tabindex="4" accesskey="s" />  <input type="submit" class="button" name="previewpost" value="{$lang->preview_post}" tabindex="5" />{$savedraftbutton}</div>
<input type="hidden" name="action" value="do_newthread" />
<input type="hidden" name="posthash" value="{$posthash}" />
<input type="hidden" name="attachmentaid" value="" />
<input type="hidden" name="attachmentact" value="" />
<input type="hidden" name="quoted_ids" value="{$quoted_ids}" />
<input type="hidden" name="tid" value="{$tid}" />
{$editdraftpid}
</form>
{$forumrules}
{$footer}





RE: [Tutoriel] Préremplir le champ de message. - Saphir - 18-01-2014

Le code me semble bon.
Pouvez-vous essayer avec l'un des éditeurs par défaut ?


RE: [Tutoriel] Préremplir le champ de message. - badmetal - 19-01-2014

Bonjour,

Merci, j'ai testé sans éditeurs, sa marche impeck,

Avez-vous une idée de comment je pourrais faire marché cette astuce avec mon éditeur actuel ?


RE: [Tutoriel] Préremplir le champ de message. - Saphir - 19-01-2014

Dans la mesure où j'ignore comment votre éditeur actuel fonctionne, non.
Essayez d'en comprendre le fonctionnement si vous avez des connaissances en HTML et JavaScript.


RE: [Tutoriel] Préremplir le champ de message. - sheron - 01-09-2014

salut a tous ! j'ai suivis le tuto ça fonctionne lorsque que l'on post un nouveau message mais pour newreply pas de resultat voici le code :
Code :
<textarea id="message" name="message" rows="20" cols="70" tabindex="2" ><if $_GET['fid'] == 5 then>
Date de la partie :

Lieux :

Organisateur :

Camp du jeux :

Votre commentaire :

</if>{$message}</textarea>



RE: [Tutoriel] Préremplir le champ de message. - exdiogene - 01-09-2014

J'essayerais avec :
Code PHP :
<if $fid == 5 then



RE: [Tutoriel] Préremplir le champ de message. - sheron - 06-09-2014

d'accord merci et aussi j'aimerais bien un préformatage donc comme celui que j'ai posté plus haut pour le sous forum "retex" donc forum 5 avec le titre pré rempli "Retex de la partie..."
et un autre pré remplissage pour le sous forum "presentation" donc forum 2 avec un titre prérempli "Présentation de"
mais la ça devient un peu plus compliquer ^^

j'ai vue qu'il fallais utiliser

Code :
<textarea id="message" name="message" rows="20" cols="70" tabindex="2"><if $_GET['fid'] == X then>ICI<elseif $_GET['fid'] == Y then>ICI</if>{$message}</textarea>

donc dans mon cas:

Code :
<textarea id="message" name="message" rows="20" cols="70" tabindex="2"><if $_GET['fid'] == 5 then>
Lieux :

Organisateur :

Camp du jeux :

Nombre de participants:

Votre commentaire : <elseif $_GET['fid'] == 2 then>
Ton âge :
Ton prénom :
Profession :
Ville :
Pourquoi pratiquer l'airsoft ? :
Pourquoi s'inscrire sur ce forum ? :
Tes répliques:
Tenues :
Loisirs autres que l'airsoft :
Association ou team dont tu dépends :
Ton film culte : </if>{$message}</textarea>

pour ces lignes je pense que c'est bon?
mais pour la ligne de préremplissage du titre (je l'avais deja modier pour retex mais j'aimerais ajouter aussi pour presentation) :

Code :
<td class="trow2">{$prefixselect}<input type="text" class="textbox" name="subject" size="40" maxlength="85" value="<if $_GET['fid'] == 5 AND !($subject) then>Retex de la partie<else/>{$subject}</if>" tabindex="1" /></td>



 Utilitaire de traduction fourni par Regentronique