Est-ce qu'il existe un plugin pour afficher le temps de lecture estimé ?

entropieentropie Member
1 févr. modifié dans Plugins

Bonjour,
Je crois que le titre est assez explicite =)
Ou sinon est-ce que c'est sorcier à faire ? (ça m'a pas l'air vu comme ça) J'imagine que ça nécessite un peu de php ou de javascript au minimum.

Réponses

  • cpalocpalo Member

    Bonjour,
    Je me souviens d'avoir vu passer une astuce du genre :
    on récupère le nombre de mots de l'article et on le divise par le nombre de mots qu'on pense "normal" devoir lire par minute.

  • Oui ou on le multiplie par la durée de lecture d'un mot, j'avais vu ça aussi.
    En tout cas ça me semble être un bon petit exercice pour moi qui suis un débutant total en php.

  • Si quelqu'un peut me dire si je suis sur la bonne piste :

    Dans l'idée ajouter

    <?php
    
    $wordCount = str_word_count($artContent);// Récupérer le nombre de mots
    $minutesToRead = round($wordCount / 200);// récupérer le nombre en minutes
    
    if($minutesToRead < 1){// si moins d'une minute
    $minutes = 'Moins d\'une minute';
    }else{
    $minutes = $minutesToRead;// sauvegarde
    }
    

    dans mon fichier article.php

    <p>
      <?php $plxShow->lang('WRITTEN_BY') ?> <?php $plxShow->artAuthor(); ?> /
      <?php $plxShow->artDate('#num_day #month #num_year(4)'); ?> /
      <?php $plxShow->artNbCom(); ?> /
      <?php $plxShow->lang('TEMPS'); $minutes <i class="fa-solid fa-timer"></i> ?>  // j'ajoute cette ligne
    
        </p>
    

    et dans le fichier lang

    'TEMPS'     => 'Temps de lecture estimé :',
    

    Bon vous moquez pas hein =)

  • 3 févr. modifié

    Bonjour,
    C'est une bonne approche.

    Je te propose un petit plugin qui fait à peu prés ce que tu souhaite.
    Pour l'utiliser , il te suffit d’insérer dans le fichier du theme le code suivant : <?php $plxShow->plxMotor->plxPlugins->aPlugins["timeLapseReading"]->showReadingtime(); ?> .

    Page du plugin https://github.com/gcyrillus/PLX_reading_lapse/

    archive https://github.com/gcyrillus/PLX_reading_lapse/archive/refs/heads/main.zip

    Il n'y a que le fichier de langue française ... pour les langues ;)

    Aprés réflexion, voici une version configurable :
    https://github.com/gcyrillus/PLX_reading_lapse/tree/config_Me et son archive : https://github.com/gcyrillus/PLX_reading_lapse/archive/refs/heads/config_Me.zip

    Le code pour l’insérer est aussi à modifier, quelque soit la version choisie, il teste la présence du plugin avant de tenter un affichage , ceci pour éviter un message d'erreur si le plugin est absent ou inactivé.

    <?php if(isset($plxShow->plxMotor->plxPlugins->aPlugins["timeLapseReading"])){$plxShow->plxMotor->plxPlugins->aPlugins["timeLapseReading"]->showReadingtime();} ?>

    Je crois qu'il y a maintenant un plugin pour ça , je n'en connaissais pas d'autre non plus.

    ♣♣♣♣ <°(((((-{ ~ Mon site avec PluXml: https://re7net.com | Mes plugins pour PluXml : https://github.com/gcyrillus }-))))°> ♣♣♣♣

  • entropieentropie Member
    4 févr. modifié

    Super, c'est vraiment génial d'avoir fait ça ;) et je pense que je ne suis pas le seul que ce plugin intéressera. Bon du coup je dois bien admettre que ça va beaucoup moins me motiver à essayer de trouver la solution par moi-même :p (j'avais mis un peu ça de côté par faute de temps). Je vais installer ça demain ! (j'en profiterai pour regarder ton code pour comprendre un peu comment c'est fait).

    Au passage je vous envie un peu de savoir programmer, j'essaie de bricoler mais je pars de très loin.

  • cpalocpalo Member

    Merci pour ce petit plugin qui va être bien pratique.
    Je le teste ce we .

  • bazooka07bazooka07 Moderator

    Bonjour @gcyrillus-nomade,
    Tu peux utiliser un hook personnalisé dans ton plugin pour simplifier le code à insérer dans le thème qui se réduira à :

    <?php eval($plxShow->callHook('monHookPerso')) ?>
    

    Le hook personnalisé se déclare dans le plugin comme les autres hooks de PluXml ( public plxPlugin::__construct(), public plxPlugin::monHookPerso(), ...)
    Lire la page du manuel du développeur

  • entropieentropie Member
    4 févr. modifié

    Bon ben c'est installé, ça s'intègre parfait 👍

    J'ai fait quelques modifs pour que ça s'intègre parfaitement. d'ailleurs je comprenais pas pourquoi ça faisait que s'afficher à la ligne jusqu'a ce que je vois le "<p class="tempsLecture">"

    Sinon une piste d'amélioration que je suggère (c'est plus simple, joli, et plus compact je trouve), un peu à la façon de Medium, C'est d'arrondir à la minute.

    Afficher juste : 🕣 3 min - ou : 🕣 3 min de lecture / c'est suffisant, et on comprend tout de suite
    Pareil pour les capitales à min/sec je trouve que c'est moins esthétique.

    Et pour les secondes je pense que quand c'est 00 c'est pas utile de les afficher finalement.

    (c'est juste une suggestion)

    Aussi j'ai noté un petit "bug ?" sur certains articles il ne prend pas en compte tout l'article, il arrête de compter après : (il compte mon titre).

    </p>
    <h2><span style="text-align:center"><a href="https://">#1 mon titre</a></span>
    </h2>
    <p>&nbsp;</p>
    

    ou après

    <p><img src="mon_image.jpg" /></p>

    C'est un des deux, peut être la balise span ?

    Au passage je me rends compte qu'il y a déjà pas pas mal de code 😅 (j'imaginais ça bcp plus simple).

  • Bonjour entropie (j'ai l'impression de dire bonjour à l'univers lol)

    Merci de tes retour et content que cela te soit utile.

    Si tu as un article ou le nombre de mot ne correspond pas vraiment, il est probable que tu ais un défaut d'imbrication dans tes balises HTML ou une typo, que le navigateur corrige peut-être mais pas php. Pour compter les mots, le script enlève toutes les balises et leurs attributs du coup si tu as mal refermé un attribut, tout ce qui suit est considérer comme partie du tag(balise) à retirer.

    Pour l'affichage, je peut éventuellement voir si l'on peut, au travers de la configuration du plugin, proposé quelque chose de moins rigide.

    J'ai refait une MAJ du plugin pour l'afficher via un HOOK comme rappeler par @bazooka07 .

    Autre chose, je ne suis pas programmeur, mais comme toi, je m’intéresse , j'ai juste pour le moment parcouru plus de chemin que toi, alors continue, ça peut-être fun.
    Bonne continuation.

    ♣♣♣♣ <°(((((-{ ~ Mon site avec PluXml: https://re7net.com | Mes plugins pour PluXml : https://github.com/gcyrillus }-))))°> ♣♣♣♣

  • entropieentropie Member
    4 févr. modifié

    Bon ben assez incompréhensible, j'ai rouvert mon article avec l'éditeur en mode source pour voir comme tu me l'as suggéré s'il n'y avait pas une balise mal fermée ou autre, j'ai rien vu de spécial, j'ai quand même copié/collé dans vscode voir s'il voyait une erreur, rien non plus. J'en ai profité pour enlever un saut de ligne qui était en trop, j'enregistre et le "bug" est parti. On en saura pas plus 😀

    Oui dans la config ajouter une option pour arrondir et afficher juste les minutes ce serait top en effet, un peu à la façon de medium ( ex ici : https://elemental.medium.com/why-your-brain-needs-boundaries-9be48b8e343 article pris totalement au hasard).

    Oui je vais continuer, mais de toutes façons ce sera toujours laborieux tant que je ne me décide pas à sérieusement apprendre les bases.
    c'est bien beau de regarder du code copier/coller/modifier mais ça ne suffit pas.

  • Okay, probablement une typo qui trainait sans que tu l'ai remarquée.

    Je viens de refaire une maj du plugin de façon à choisir le format d'affichage et d'afficher ou non, du texte derrière les minutes et seconde. Une option pour ne pas afficher les secondes est aussi ajouter.
    lien de la dernière archive : https://github.com/gcyrillus/PLX_reading_lapse/archive/refs/heads/flexible.zip
    j'ai laisser les autres version sous différentes branches si tu veut y voir les différences et repartir de celle que tu veut.

    ♣♣♣♣ <°(((((-{ ~ Mon site avec PluXml: https://re7net.com | Mes plugins pour PluXml : https://github.com/gcyrillus }-))))°> ♣♣♣♣

  • bazooka07bazooka07 Moderator

    @entropie,
    Pour voir si ta page HTML est bien formée, tu peux afficher le code source en tapant au clavier "Ctrl-u" dans ton navigateur préféré ( Firefox, Brave, ...).
    Si une balise ouvrante est mal fermée ou une balise fermante orpheline, elles seront affichées en rouge.

    On peut afficher d'autres outils intéressants en tapant sur la touche "F12" dans Firefox (Editeur de règles CSS, débogueur de code Javascript, erreur 404 pour les fichiers perdus, temps de téléchargement, ...)

  • entropieentropie Member
    5 févr. modifié

    Merci @bazooka07, en effet c'est une fonctionnalité bien pratique de ff dont je me sers souvent. Notamment pour le css, ça change la vie

    D'ailleurs à ce propos en inspectant ma page, je viens de remarquer un truc, dans ton plugin share_me (il me semble bien que ça vienne de lui) quand il est affiché sur la page il injecte deux balises orphelines </ul> et </p>

    Dans share_me.php Ligne 143 (ou 142 vu j'ai un peu modifié ce fichier) on retrouve bien un </p> plus précisément je vois'@<p[^>]*>(.*)</p>@isU' et j'imagine que la balise ouvrante n'est pas prise en compte.

    et ligne 712 </ul> mais je ne vois aucune trace de la balise ouvrante.

  • entropieentropie Member
    5 févr. modifié

    @gcyrillus-nomade Je viens d'installer ta nouvelle version c'est tip top 👌, avec le choix dans les options de personnalisation. Installé et configuré exactement comme je voulais. Merci encore.

Connectez-vous ou Inscrivez-vous pour répondre.