kitoy.me

Un flux RSS pour le blog de Wondercms

13 June 2025
#RSS #lowtech #geek

Salut, un nouvel article pour te donner un peu des news. 

Je sais que je n'ai pas beaucoup écrit ces derniers mois et pour cause j'ai un gros problème quand je fais un truc, c'est que s’il manque une fonctionnalité au truc que j'utilise ben ça  me bloque. C'est foireux, ça n'a aucun sens mais c'est comme ça :/. Je me maudis tout seul d'avoir ce genre de comportement mais bon ... 


Là, en l'occurrence c'était cette fonctionnalité de flux RSS. 



Mais c'est quoi encore ton truc la ... pfff ...  


Un flux RSS c'est super pratique car tu n'est pas obligé d'aller visiter chaque site web pour voir si il y a des nouveautés ! Quand un site propose un flux RSS bien tu peux utiliser un logiciel comme thunderbird ou d'autres trucs hein ! regardes ce que tu peux faire de sympa avec comme page d'accueil ou de news ;). et du coup dans une même application tu pourras avoir tous les nouveaux articles qui sont sortis sur tes sites préférer ! Alors c'est quand même super pratique ... 





Y'a quand même du progrès ! 



Oui il y a un peu de progrès, j'ai décidé d'écrire moi-même la fonctionnalité et on verra si elle est acceptée par le développeur.  En général c'est pas trop le cas . Pour faire cette fonctionnalité ça a été assez simple. Comme WonderCMS n'utilise pas de base de donnée mais des fichiers plats (c'est un fichier au format json qui sert de base de donnée), en gros chaque fois qu'un article est modifié une méthode est appelé pour générer le fichier qui contient tous les articles. Et je me servis de cette méthode pour générer en même temps le fichier RSS (qui est un fichier plat au format XML en fait ...). J'ai créé une méthode pour générer mon flux RSS comme ceci : 





   private function gen_rss_feed(): void {
                global $Wcms;
                
                $rss .= "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n";
                $rss .= <<<RSS
        <rss version="2.0"
        xmlns:content="http://purl.org/rss/1.0/modules/content/"
        xmlns:dc="http://purl.org/dc/elements/1.1/"
        xmlns:atom="http://www.w3.org/2005/Atom"
        xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
        xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
        > 
RSS;
                $rss .= "\n\t<channel>\n";
                $rss .= "\t\t<title>" . $Wcms->get('config', 'siteTitle') . "</title>\n";
                $rss .= "\t\t<link>". $Wcms->url($this->slug) ."</link>\n";
                $rss .= "\t\t<description> Le blog de " . $Wcms->get('config', 'siteTitle') . "</description>\n";
                $rss .= "<language>". $Wcms->get('config', 'siteLang') ."</language>\n";
                $mydate=time();
                $rss .= "<lastBuildDate>" . date("D, d M Y m:h:s",$mydate) . "</lastBuildDate>\n";
                foreach (array_reverse((array) $this->db->posts, true) as $slug => $post){
                        $rss .= "\t\t\t<item>\n";
                        $rss .= "\t\t\t<title>\n \t\t\t " . htmlspecialchars($post->title, ENT_QUOTES) . "\n \t\t\t </title> \n";
                        $rss .= "\t\t\t<pubDate>" .  date("D, d M Y m:h:s", $post->date) . "</pubDate> \n";
                        $rss .= "\t\t\t <link>" . $Wcms->url($this->slug . '/' . $slug) . "</link>\n";
                        $rss .= "\t\t\t <guid>" . $Wcms->url($this->slug . '/' . $slug) . "</guid>\n";
                        $rss .= "\t\t\t<description>\n" . htmlspecialchars($post->description, ENT_QUOTES). "\n</description>\n";
                        $rss .= "\t\t\t<content:encoded>\n \t\t\t" . htmlspecialchars($post->body, ENT_QUOTES) .  "\n\t\t\t</content:encoded>\n";
                        $rss .= "\n\t\t\t</item>\n";
                
                }




Du coup j'ai proposé ma fonctionnalité sur le dépot github du projet mais en même temps je vais un répo chez moi car le prochain travail ce sera de mieux gérer les traductions du logiciel et aussi il va chercher pas mal de ressource ailleurs et c'est pas top."

Après ces quelques petits défauts, j'apréci vraiment le logiciel. Tu peux le mettre de partout et ça fonctionne il n'y a pas de base de donnée à gerer, il y a une petite interface de gestion ou tu peux faire tes sauvegardes et tout c'est cool. Tu peux laisser une personne néophyte gérer le contenu de son site web avec c'est vraiment très bien. 




L'éditeur summernote n'est pas très pratique, mais je verrai après ça aussi; pourtant j'aimais bien avant ...





Retourner à la liste des articles