Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /homepages/14/d213344623/htdocs/blog/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /homepages/14/d213344623/htdocs/blog/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /homepages/14/d213344623/htdocs/blog/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /homepages/14/d213344623/htdocs/blog/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /homepages/14/d213344623/htdocs/blog/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /homepages/14/d213344623/htdocs/blog/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /homepages/14/d213344623/htdocs/blog/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /homepages/14/d213344623/htdocs/blog/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /homepages/14/d213344623/htdocs/blog/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /homepages/14/d213344623/htdocs/blog/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /homepages/14/d213344623/htdocs/blog/wp-content/plugins/deans_code_highlighter/geshi.php on line 2147

PhpBB + RSS

Je pense que vous connaissez tous phpBB : c’est un des forums gratuits les plus utilisés sur Internet. Si vous ne savez pas ce que c’est, passez votre chemin, cet article ne vous intéressera pas ! 😉 La nouvelle version (version 3 pour ne pas la citer) a été révélée au public il y a quelques semaines. La dernière mouture en date est la RC5. Cette version a pas mal d’atouts à faire valoir, mais il manque (manquait ?) quelque chose…les flux RSS/Atom. Bref, étant administrateur d’un forum phpBB3, j’ai décidé, suite aux différentes demandes que j’ai eu de la part des utilisateurs, d’ajouter des flux RSS et Atom sur le-dit forum. Pour ceux qui souhaitent faire la même chose, voici la marche à suivre…

Un mod open-source existe déjà (en version 1.1.1b à l’heure où j’écris), et en plus il est paramétrable…Il n’est officiellement compatible qu’avec le thème « prosilver » (le thème par défaut de phpBB3) mais doit pouvoir s’adapter facilement à d’autres thèmes.

  1. Télécharger le package nécessaire ici. C’est le mod « Simple Syndication » pour phpBB3.
  2. Décompresser l’archive.
  3. Déposer le contenu du répertoire « root » à la racine du forum, sur le serveur d’hébergement.
  4. Modifier le fichier « overall_header.htm » du répertoire « style/prosilver/template » en ajoutant les lignes suivantes :
    1. <link rel="alternate" type="application/rss+xml" title="{SITENAME}" href="syndication.php?type=rss" />
    2.  
    3. <link rel="alternate" type="application/atom+xml" title="{SITENAME}" href="syndication.php?type=atom" />

    juste avant la balise </head>.

Ceci permet grâce à l’adresse http://www.monadressedeforum.com/syndication.php?type=atom d’avoir accès au flux Atom, et avec http://www.monadressedeforum.com/syndication.php?type=rss2 d’avoir accès au flux RSS.

J’ai par ailleurs identifié un petit bug dans la génération du flux RSS : une condition vérifie si un corps de message doit être encadré par un CDATA[]. Parfois, le corps de la boucle n’est pas exécuté à tort. J’ai donc modifié le fichier « syndication.php » de la racine pour faire en sorte que le corps de texte d’un message du flux soit toujours encadré d’un CDATA[]. La fonction « rss_prepare_message » a été modifiée comme suit :

Originale

  1. /**
  2.  
  3. * encode message for usage with RSS
  4.  
  5. */// embed message into CDATA tags in case it contains HTML tags or entities
  6. ‘/<[^>]+>|&amp;#?[\w]+;/’, $message))
  7.  
  8.  {
  9.  
  10.        // replace any ]]>
  11. ‘]]>’, ‘]]>’, $message);
  12.  
  13.        $message = ‘<![CDATA[‘ . $message . ‘]]>’;
  14.  
  15.  }
  16.  
  17. }

Version modifiée

  1. /**
  2.  
  3. * encode message for usage with RSS
  4.  
  5. */// embed message into CDATA tags in case it contains HTML tags or entities
  6.  
  7.  //if (preg_match(‘/<[^>]+>|&amp;#?[\w]+;/’, $message))
  8.  
  9.  //{
  10.  
  11.        // replace any ]]>
  12. ‘]]>’, ‘]]>’, $message);
  13.  
  14.        $message = ‘<![CDATA[‘ . $message . ‘]]>’;
  15.  
  16.  //}
  17.  
  18. }