Tutoriel Redactor 10 : intégrer un compteur de mots
A peine l'été terminé, l'équipe qui a créée Redactor nous propose une grosse MAJ de son éditeur WYSIWYG. Et cette fois-ci, le nombre de modifications est importante puisque le cœur du système a été revu. Et cela peut poser parfois des problèmes, notamment avec les plugins.
Un plugin pour compter les mots
Plutôt que vous ennuyer avec tous les détails, vous trouverez la liste sur le site d'Imperavi. Dans mon utilisation quotidienne de Redactor (et pour les personnes qui ont l'habitude de publier sur mes annuaires), j'utilise un plugin pour compter le nombre de mots.
Et bien ce plugin ne fonctionne plus avec la nouvelle version de Redactor dont je vous avais parlé l'année dernière. Étant donné qu'il n'a aucune valeur stratégique à mes yeux (contrairement au plugin d'upload d'image que j'ai développé et qui fait des choses extraordinaires, si si ^^), je vais le partager avec vous. C'est parti pour le tutoriel.
Dans un premier temps, nous allons créer un fichier javascript. Celui-ci va permettre d'ajouter un bouton à la barre d'outils de Redactor et d'effectuer une action lors du clic. Créez le fichier redactor.compteur.js. Comme indiqué dans la doc, on initialise le plugin :
if (!RedactorPlugins) var RedactorPlugins = {}; RedactorPlugins.compteur = function() { return { }; };
Ensuite, nous allons avoir besoin de la fonction pour créer le bouton et son appel au clic. On ajoute donc :
if (!RedactorPlugins) var RedactorPlugins = {}; RedactorPlugins.compteur = function() { return { init: function() { // Ajout du bouton dans la barre d'outils de Redactor var button = this.button.add('compteur', 'Compteur de mots'); // Action sur le bouton this.button.addCallback(button, this.compteur.bouton); } }; };
En l'état, vous devriez voir le bouton mais aucune action n'est possible. Il faut donc ajouter la fonction qui permettra d'afficher une alerte suite au clic. Dans cet exemple, nous souhaitons afficher le nombre de mots contenus dans l'éditeur de texte :
if (!RedactorPlugins) var RedactorPlugins = {}; RedactorPlugins.compteur = function() { return { init: function() { // Ajout du bouton dans la barre d'outils de Redactor var button = this.button.add('compteur', 'Compteur de mots'); // Action sur le bouton this.button.addCallback(button, this.compteur.bouton); }, bouton: function() { // Affichage d'une alerte au clic du bouton alert('Votre texte contient '+ this.compteur.count() +' mots.'); } }; };
Là encore, on a bien avancé mais cela ne suffit pas. Nous avons besoin d'une dernière fonction pour compter le nombre de mots. La voici donc :
if (!RedactorPlugins) var RedactorPlugins = {}; RedactorPlugins.compteur = function() { return { init: function() { // Ajout du bouton dans la barre d'outils de Redactor var button = this.button.add('compteur', 'Compteur de mots'); // Action sur le bouton this.button.addCallback(button, this.compteur.bouton); }, bouton: function() { // Affichage d'une alerte au clic du bouton alert('Votre texte contient '+ this.compteur.count() +' mots.'); }, count: function() { // Extraction du contenu de l'editeur var html = this.code.get(); // Suppression du code HTML et des retours a la ligne text = $(html).text().replace(/t+/g, " ").replace(/n/g, " ").replace(/s+/g, " "); // Affichage du decompte return text.split(' ').length - 1; } }; };
Le plugin est désormais fonctionnel, nous avons besoin maintenant de l'appeler. Dans votre fonction appelant Redactor, ajoutez les lignes suivantes :
<script type="text/javascript"> $(document).ready(function() { $('#texte').redactor({ plugins: ['compteur'] }); }); </script>
Avouez que ce n'est pas sorcier lorsque que l'on vous donne la solution. :-)
Il reste une toute petite chose à faire (mais vous êtes grands hein ^^), c'est de créer les boutons de compteur (normal et hover de 14px) puis de les appeler via une feuille de style (différente de celle de Redactor) comme ceci (pensez à appeler la feuille de styles dans la balise head) :
.redactor-toolbar li a.re-compteur { background: url(../images/picto-count.png) no-repeat center }.redactor-toolbar li a.re-compteur:hover { background: #1f78d8 url(../images/picto-count-hover.png) no-repeat center; outline: none }
Avec ce petit tutoriel, vous pourrez désormais vérifier le nombre de mots présents dans votre zone de texte et obtenir le message suivant :
2 réflexions sur ce billet
Super ! Merci pour le tuto. [mode week-end ON] Mais y'a un truc que je ne comprends pas : j'ai toujours lu sur les blogs SEO qu'il fallait des textes de 250 mots minimum. Ca veut dire qu'avec Redactor, on a le droit de ne rédiger que 197 mots et qu'on va passer tranquille sous le radar GG ? [mode week-end OFF]
Le 03/10/2014 à 17h46
Salut Yann
Le plugin ne donne qu'une information supplémentaire. Il faut bien évidemment contrôler lors de la validation que le texte contient bien le nombre de mots requis. Quant au nombre de mots minimum lu sur les blogs SEO, WTF. :-)
La création de site Internet sur mesure est le coeur de métier de l'agence web Infini'click.
D'autres prestations sont également proposées, découvrez-les !
- Tutoriel : installer un serveur Debian (wheezy)
- Tutoriel : Installer un certificat SSL
- Piwik : monitorez tous vos sites discrètement
- Tutoriel Paypal : Intégration et configuration du paiement en ligne
- Tutoriel PayPlug : intégration au panier d'achat
- Référencement des images : l'état de l'art
- Des onglets en CSS avec JQuery
- Gildas le 04/03/2022 à 18:00
Nop j'ai que le require('fpdf.php) ; Mais pas... - Hervé le 04/03/2022 à 17:58
Gildas Tu n'appelles pas de fichier externe via un... - Gildas le 04/03/2022 à 17:50
merci de ton retour rapide, effectivement dans ma... - Hervé le 04/03/2022 à 17:45
Bonjour Gildas Effectivement, 8 ans ça fait un bail.... - Gildas le 04/03/2022 à 17:37
Bonjour Hervé, Bon j'arrive 8 ans après la... - Olivier le 16/01/2022 à 23:09
C'est clair que les actions réalisées ne correspondent...