School of Pub, où la perfection est à la portée de chacun. (Dixit Audidounette)

AccueilFAQRechercherMembresGroupesS'enregistrerConnexion

 


Partager | 
 

 [Templates/Javascript] Installer un compteur de mot

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
 

Izumi

Retraitée

Voir le dossier scolaire

Retraitée

Féminin Nombre de messages: 384
Age: 19
$ops: 1485
Points: 55
Date d'inscription: 25/04/2011
 
MessageSujet: [Templates/Javascript] Installer un compteur de mot   Dim 19 Juin - 0:35

Nombreux sont les forums qui imposent un nombre de lignes minimal pour les rp; et encore plus nombreux sont les membres qui détournent la règle avec une vingtaine de sauts à la ligne!
Mais dans ce tuto on va apprendre à emme... euh... embêter ces vilaines gens. Vive moi

Je m'explique: lors de la rédaction d'un post, le membre va voir un petit message qui lui dit combien de mots il a écrit. On pourra également avec un peu de customisation changer ce message à partir d'un certain seuil et afficher par exemple: "Vous avez écrit plus de 700 mots. Vous pouvez poster!".

Testez!





Javascript est mon ami!


Nan je plaisante évidemment, mais ne vous inquiétez pas je vais vous guider pas à pas. =)
On va partir d'un script donné ici: http://www.editeurjavascript.com/scripts/scripts_textes_3_231.php (si vous n'arrivez pas à le voir, il est affiché plus bas)

Bon les explications n'étant pas donné on décortiquera le code ensemble.
Deux choix s'offre à vous:

  • Soit on crée une page Javascript (PA> Modules > Gestion des codes Javascript)

    Donnez un titre à votre page et cochez placement: "toutes les pages".

  • Soit on crée une page HTML (PA > Modules > Gestion des pages HTML)
    Cocher "Non" les deux fois.


Dans les deux cas,
Copiez le script que je redonne ci dessous:

Code:

function Compter(chaine, formulaire) {
  var exp=new RegExp("[a-zA-Z0-9éèêëàáâäóòôöíìîïçÉÈÊËÀÁÂÄÒÓÔÖÌÍÎÏÇ-]+","g");
  var tabNom=chaine.match(exp);
  if (tabNom==null) {formulaire.compte.value = "Nombre de mots = 0";}
  else {
    var affichage="Nombre de mots = " + tabNom.length + "";
    formulaire.compte.value = affichage;
  }
}


Code:
function Compter(chaine, formulaire) {


Ici on déclare donc une fonction qu'on appelle Compter et ses deux arguments qui vont rapporter des éléments html du template dans le javascript.

Code:
var exp=new RegExp("[a-zA-Z0-9éèêëàáâäóòôöíìîïçÉÈÊËÀÁÂÄÒÓÔÖÌÍÎÏÇ-]+","g");


On déclare une variable exp qui "désigne" nos mots. Je ne vais pas m'étendre sur les expressions sinon on va s'embrouiller. Donc pas Touche!

Code:
var tabNom=chaine.match(exp);


Là on déclare une variable tabNom qui va chercher dans la chaîne de caractères la variable "exp".
Maintenant on rentre dans les conditions.

Code:
 if (tabNom==null) {formulaire.compte.value = "Nombre de mots = 0";}


Si la variable tabNom est nulle il n'y a pas de mots et on affiche "Nombre de mots= 0".
Sauf que dit comme ça c'est un peu moche pour un forum RP on va donc changer cette phrase en modifiant ce qui se trouve entre "".
Attention! Il faut faire gaffe aux caractères spéciaux! Pour Javascript il faut utiliser l'équivalent en octal qu'on trouve dans des tableaux tel que celui ci. Voilà ce que ça donne pour moi:

Code:
 if (tabNom==null) {formulaire.compte.value = "Vous avez n'avez rien \351crit";}


On va donc changer le code de manière à avoir "Vous avez écrit X mots" au lieu de "Nombre de mots = X". Cela va juste engendrer une faute de français que l'on corrigera plus tard avec une ligne de code en plus. Wink
Maiis dans l'immédiat on suit simplement le code ligne à ligne.

Code:
  else {
    var affichage="Nombre de mots = " + tabNom.length + "";


Sinon on déclare une variable nommée affichage qui est égale à "Nombre de mots =" suivie du nombre de mots trouvés par notre variable tabNom. Avec nos modifications de phrase on a donc:

Code:
    else {
        var affichage= "Vous avez \351crit " + tabNom.length + " mots";


On termine en affichant la variable affichage dans un formulaire destiné.

Code:
formulaire.compte.value = affichage;


Et ferme avec des accolades.

Si vous avez changé les phrases comme moi vous verrez qu'on a une jolie faute pour 1 mot qui s'affiche "1 mots". On va donc rajouter une ligne de code après la condition if pour le cas où tabNom trouve 1 mot:

Code:
    else if (tabNom.length==1) {formulaire.compte.value = "Vous avez \351crit 1 mot";}


Maintenant qu'on sait changer les phrases on va ajouter un seuil de mots. Ca se fait sur le même principe que la phrase précédente sauf que qu'au lieu == on va utiliser >= (comprenez supérieur ou égal).

Donc après la ligne ci dessus on écrit:

Code:
    else if (tabNom.length>=10) {formulaire.compte.value = "Vous avez  \351crit plus de 10 mots soit " + tabNom.length +" mots. Vous pouvez postez!";}


Ici j'ai utilisé 10 mais vous mettez la valeur que vous voulez. ^^
Le code de fin:

Code:
function Compter(chaine, formulaire) {
    var exp=new RegExp("[a-zA-Z0-9éèêëàáâäóòôöíìîïçÉÈÊËÀÁÂÄÒÓÔÖÌÍÎÏÇ-]+","g");
    var tabNom=chaine.match(exp);
    if (tabNom==null) {formulaire.compte.value = "Vous n'avez encore rien \351crit.";}
    else if (tabNom.length==1) {formulaire.compte.value = "Vous avez \351crit 1 mot";}
    else if (tabNom.length>=10) {formulaire.compte.value = "Vous avez  \351crit plus de 10 mots soit " + tabNom.length +" mots. Vous pouvez postez!";}
    else {
        var affichage= "Vous avez \351crit " + tabNom.length + " mots";
        formulaire.compte.value = affichage;
  }
}


Maintenant on peut souffler, on enregistre et dans la gestion des pages HTML on copie le lien de la page.

Partie HTML



    SI vous avez créé une page HTML et Seulement SI:
  • Allez dans le PA> Affichage> Templates > Général
    On modifie alors le template overall_header. Ici on insère le javascript comme ceci:

    Code:
    <script type="text/javascript" src="LIEN DE LA PAGE HTML"></script>


    en plaçant ce code au dessus de la balise:

    Code:
    </head>


    Enregistrer et surtout VALIDEZ.


Il faut ensuite installer le compteur au dessus de la zone de saisie qui vous sert à poster.
PA > Affichage > Templates > Poster & Messages Privés> posting_body

Repérez la partie qui nous intéresse:

Code:
<button class="button2" id="text_editor_cmd_switchmode" type="button" title="{SWITCH_EDITOR_MODE}"><img src="{PATH_IMG_FA}i/switch_wysiwyg.gif" alt="{SWITCH_EDITOR_MODE}" /></button>
                  </div>
              </div>
            </td>
        </tr>
        <tr>
            <td colspan="9"><span class="gensmall" style="width:450px;font-size:10px" id="helpbox"></span></td>
        </tr>
        <tr>
            <td colspan="9">
              <span class="gen" style="width:100%; height:250px">
                  <textarea id="text_editor_textarea" class="post" style="width:100%;height:250px" name="message" rows="15" cols="35" tabindex="3" wrap="virtual">{MESSAGE}</textarea>


Ci dessous le champ de saisie d'un message:

Code:
<textarea id="text_editor_textarea" class="post" style="width:100%;height:250px" name="message" rows="15" cols="35" tabindex="3" wrap="virtual">{MESSAGE}</textarea>


Il faut signaler à notre fonction Compter de faire son boulot dans ce formulaire ci.

Code:
<textarea id="text_editor_textarea" class="post" style="width:100%;height:250px" name="message" rows="15" cols="35" tabindex="3" wrap="virtual" onkeyup="Compter(this.form.message.value, this.form)">{MESSAGE}</textarea>


Ensuite on ajoute un formlaire qui affichera le nombre de mots comme ceci:

Code:
<input style="border: none; background-color: transparent;" name="compte" value="" size="80" readonly />


Au final on obtient:

Code:
<button class="button2" id="text_editor_cmd_switchmode" type="button" title="{SWITCH_EDITOR_MODE}"><img src="{PATH_IMG_FA}i/switch_wysiwyg.gif" alt="{SWITCH_EDITOR_MODE}" /></button>
                  </div><input style="border: none; background-color: transparent;" name="compte" value="" size="80" readonly /></textarea>
              </div>
            </td>
        </tr>
        <tr>
            <td colspan="9"><span class="gensmall" style="width:450px;font-size:10px" id="helpbox"></span></td>
        </tr>
        <tr>
            <td colspan="9">
              <span class="gen" style="width:100%; height:250px">
                  <textarea id="text_editor_textarea" class="post" style="width:100%;height:250px" name="message" rows="15" cols="35" tabindex="3" wrap="virtual" onkeyup="Compter(this.form.message.value, this.form)">{MESSAGE}</textarea>


Le mot de la Fin



/!\ Pensez à vérifier vos codes si ça ne marche pas, les caractères spéciaux comme ">" peuvent être remplacés par leur équivalent HTML (ex: pour > "& gt")


J'espère ne pas avoir perdu trop de gens en cours de route et je félicite les courageux qui sont allés jusqu'au bout! Si vous avez quelques soucis avec le tuto, n'hésitez pas à demander.
Et je me dégage de toute responsabilité en cas de suicide à cause de javascript. :siffle:

Viel Glück! Euuuuh


Pour toutes questions concernant le tuto, c'est par [ici]


Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://keikoku.forumpro.fr
 

Nao

Artiste

Voir le dossier scolaire

Artiste

Féminin Journaliste du M-SoP

Nombre de messages: 2835
Age: 14
Localisation: Dans ma salle de bain :3
$ops: 9899
Points: 1030
Date d'inscription: 20/02/2011
Distinctions: Déléguée de Janvier 2012
Miss SoP Premier trimestre 2012

 
MessageSujet: Faire un compte mot pour son forum   Dim 18 Déc - 10:10



Faire un compte mot pour son forum

Coucou Smile
Si vous avez un forum RPG et que vous voulez faire un compte mot pour votre forum, suivez mon tuto Wink


I) Aller hop! Une page HTML, une !


    Avant d'attaquer les templates, commençons par créer une page HTML.
    Panneau d'admin => Modules => HTML => Gestion de page HTML => Créer une nouvelle page HTML.
    Entrez un titre à votre page, puis cocher, si cela n'est pas déjà fait, "non" et "non".
    Maintenant, mettez ce code dans le contenu et enregistrez.
    Code:
    function Compter(chaine, formulaire) {
    var exp=new RegExp("[a-zA-Z0-9éèêëàáâäóòôöíìîïçÉÈÊËÀÁÂÄÒÓÔÖÌÍÎÏÇ-]+","g");
      var tabNom=chaine.match(exp);
     if (tabNom==null) {formulaire.compte.value = "0 mot";}
    else if (tabNom==1) {formulaire.compte.value = "1 mot";}
    else {
        var affichage= tabNom.length + " mots";
        formulaire.compte.value = affichage;
      }
    }

    Récupérez le lien de votre page situé sous l’intitulé "URL du lien"

II) Les templates sont nos amis.


    Maintenant nous allons jouer avec les templates !
    Pour cela, allez dans :
    Panneau d'admin => Affichage => Templates => Général
    Commençons par aller dans le template overall_header.
    Recherchez :
    Code:
    </head>

    Et mettez juste avant:
    Code:
    <script type=text/javascript src=URL DE LA PAGE></script>

    N'oubliez pas de mettre le lien de votre page HTML à la place de "URL DE LA PAGE"
    Enregistrez et validez en appuyant sur le "+" vert.

    Ensuite, aller dans le template posting_body qui se trouve dans :
    Panneau d'admin => Affichage => Templates => Poster & Messages Privés
    Cherchez ce code ci:
    Code:
    <button class="button2" id="text_editor_cmd_switchmode" type="button" title="{SWITCH_EDITOR_MODE}"><img src="{PATH_IMG_FA}i/switch_wysiwyg.gif" alt="{SWITCH_EDITOR_MODE}" /></button>
                      </div>
                  </div>
                </td>
            </tr>
            <tr>
                <td colspan="9"><span class="gensmall" style="width:450px;font-size:10px" id="helpbox"></span></td>
            </tr>
            <tr>
                <td colspan="9">
                  <span class="gen" style="width:100%; height:250px">
                      <textarea id="text_editor_textarea" class="post" style="width:100%;height:250px" name="message" rows="15" cols="35" tabindex="3" wrap="virtual">{MESSAGE}</textarea>


    Et remplacez le par:
    Code:
    <button class="button2" id="text_editor_cmd_switchmode" type="button" title="{SWITCH_EDITOR_MODE}"><img src="{PATH_IMG_FA}i/switch_wysiwyg.gif" alt="{SWITCH_EDITOR_MODE}" /></button>
                      </div><input style="border: none; background-color: transparent;" name="compte" value="" size="40" readonly /></textarea>
                  </div>
                </td>
            </tr>
            <tr>
                <td colspan="9"><span class="gensmall" style="width:450px;font-size:10px" id="helpbox"></span></td>
            </tr>
            <tr>
                <td colspan="9">
                  <span class="gen" style="width:100%; height:250px">
                      <textarea id="text_editor_textarea" class="post" style="width:100%;height:250px" name="message" rows="15" cols="35" tabindex="3" wrap="virtual" onkeyup="Compter(this.form.message.value, this.form)">{MESSAGE}</textarea>

    Enregistrez et validez votre template, vous avez un compte mot !

III) Aperçu


    Aller hop, un aperçu pour vous faire plaisir Wink


Des questions ? C'est par ici !


_________________



Mes cadeaux de Noël:
 

Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://skimia-leydith.skyrock.com/
 

[Templates/Javascript] Installer un compteur de mot

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
School of Pub :: Les cours :: Tutoriels :: RPG-


Aller en haut
Aller en bas