[Résolu] Thumbnail dans les flux RSS/ATOM

PPmarcelPPmarcel Member
août 2017 modifié dans Entraide
Bonjour,

J'ai récemment déplacé toutes les bannières que j'ai dans mes châpo vers le thumbnail.
Mais je n'avais pas pensé que ce thumbnail ne ressortait pas du tout dans les flux RSS.

Comment pourrais-je le faire apparaître au début de chaque article ?

Réponses

  • [== Indéfini ==]
    $plxShow->artThumbnail();
    
    Regarde comment est fait le thème par défaut.
  • PPmarcelPPmarcel Member
    août 2017 modifié
    Côté thème, c'est OK il n'y pas de problème.

    Mais c'est dans les flux RSS que je ne le vois pas ressortir. Je pense qu'il faut modifier feed.php, voire core/lib/class.plx.feed.php pour que le artThumbnail apparaissent en début des articles dans les flux.

    En revanche je ne sais pas où trifouiller précisément pour faire apparaître l'image.
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Dans le fichier core/lib/class.plx.feed.php, il faut rajouter dans la boucle while qui est dans la fonction getRssArticles() un item de type enclosure.
    Voir la spécification ici
    Il faut préciser le mime-type et la longueur du média

    Cela prend un peu de temps à le coder mais ce n'est pas très difficile.

    A rajouter à la prochaine version de PluXml.
  • PPmarcelPPmarcel Member
    août 2017 modifié
    Merci Bazooka, en connaissant la fonction j'ai pu avancer !

    En partant de la ligne 237 de core/lib/class.plx.feed.php, dans la fonction getRssArticles() on a ces instructions qui copient le chapo ou le chapo + contenu dans une variable :
                    # Traitement initial
                    if($this->aConf['feed_chapo']) {
                        $content = $this->plxRecord_arts->f('chapo');
                        if(trim($content)=='') $content = $this->plxRecord_arts->f('content');
                    } else {
                        $content = $this->plxRecord_arts->f('chapo').$this->plxRecord_arts->f('content');
                    }
    

    Il suffi alors d'ajouter un petit check du thumbnail et de le placer en début de variable $content si il existe (attention au ".=" ensuite pour concaténer le contenu dans la variable $content) :
                    # Recherche du thumbnail
                    $art_thumbnail = $this->plxRecord_arts->f('thumbnail');
                    if(empty($art_thumbnail)) {
                        $content = ""; 
                    } else {
                        $content = "<img src=/".$this->plxRecord_arts->f('thumbnail').">";
                    }   
                    # Traitement initial
                    if($this->aConf['feed_chapo']) {
                        $content .= $this->plxRecord_arts->f('chapo');
                        if(trim($content)=='') $content = $this->plxRecord_arts->f('content');
                    } else {
                        $content .= $this->plxRecord_arts->f('chapo').$this->plxRecord_arts->f('content');
                    }   
    

    Maintenant j'ai bien le thumbnail affiché au début de chaque article.

    Par contre je n'ai pas précisé de dimensions à l'image, cela semble bien fonctionner sans ça et validator.w3.org ne m'a pas râlé dessus à ce sujet.
  • Ça mériterait que la version officielle de PluXml le fasse nativement et que soient ajoutés des hooks officiels en début des boucles while (plutôt qu'à la fin ou en plus de ceux présents à la fin de ces fonctions getRssXXXX) pour pouvoir intervenir sur le contenu...

    Comme noms, on peut imaginer plxFeedRssBeginArticlesXml, plxFeedRssBeginCommentsXml et plxFeedRssBeginAdminCommentsXml, sans toucher aux anciens noms des hooks existants.
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour

    oui pour ajouter la prise en compte des miniatures dans les flux
    non pour mettre les hooks en debut de boucle while. ils sont à la fin pour pouvoir par exemple surcharger/modifier à partir des plugins le contenu des variables alimentées dans la boucle avant l'appel du hook

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    août 2017 modifié
    Sur Github le fichier core/lib/class.plx.feed.php a été déjà été modifié por prendre en compte les thumbnails.
    C'est visible à l'adresse suivante à partir de la ligne n°235 :
    https://github.com/pluxml/PluXml/blob/master/core/lib/class.plx.feed.php

    @PPmarcel,
    Il peut y avoir des cas où le thumbnail est sur un autre site. Donc il faut vérifier si on a pas une adresse absolue.

    Hélas, le test pour vérifier cela est erroné sur github.
    Si vous avez un fichier pour le thumbnail nommé mon-petit-http-qui-va-te-planter.png on va considérer que c'est une adresse absolue
    Il faut faire le test comme ceci pour voir si on utilise un protocole:
    [== PHP ==]
    if(!preg_match('@^[a-z]+://@', $src)) {
        $src = $this->racine.$src;	
    } 
    

    Si vous ne pouvez pas attendre la nouvelle version de PluXml après Paques, utilisez git
    [== bash ==]
    git clone --depth 1 https://github.com/pluxml/PluXml.git
    

    Mais mon idée était de mettre le thumbnail en dehors de la description de l'article.
  • L'implémentation de Stéphane est carrément plus élégante. ^^

    Donc j'ai repris les portions de codes de github. Dans mon cas les images sont systématiquement issues de pluxml donc je n'ai pas de soucis.
Connectez-vous ou Inscrivez-vous pour répondre.