1
12

Flux RSS

RSS

Un site peut renvoyer un flux RSS automatiquement généré à partir des extraits ou des contenus d'un ou plusieurs fils. Il suffit d'assigner les numéros des fils au paramètre $rss_thread et de mettre le paramètre $rss_description à 'abstract' ou 'content' dans config.inc. L'action rssfeed fabrique chaque entrée du flux en prenant le titre, la date de création et les extraits ou les contenus du type texte de tous les nœuds actifs des fils définis par $rss_thread.

rssfeed.php
  1. require_once 'filemimetype.php';
  2.  
  3. function rssfeed($lang) {
  4.     global $rss_thread, $rss_description;
  5.  
  6.     $feed_content = $rss_description == 'content';
  7.  
  8.     $itemlist = array();
  9.  
  10.     if ($rss_thread) {
  11.         $sqllang=db_sql_arg($lang, false);
  12.  
  13.         $tabthreadnode=db_prefix_table('thread_node');
  14.         $tabnode=db_prefix_table('node');
  15.         $tabnodelocale=db_prefix_table('node_locale');
  16.  
  17.         $where=(is_array($rss_thread) ? 'tn.thread_id IN (' . implode(',', $rss_thread) . ')' : "tn.thread_id=$rss_thread") . ' AND tn.ignored=FALSE';
  18.  
  19.         if ($feed_content) {
  20.             $tabnodecontent=db_prefix_table('node_content');
  21.             $tabcontenttext=db_prefix_table('content_text');
  22.  
  23.             $sql="SELECT nl.name AS node_name, nl.title AS node_title, UNIX_TIMESTAMP(n.created) AS node_created, nl.image AS node_image, ct.text AS content_text FROM $tabthreadnode tn JOIN $tabnode n ON n.node_id=tn.node_id JOIN $tabnodelocale nl ON nl.node_id=tn.node_id AND nl.locale=$sqllang LEFT JOIN $tabnodecontent nc ON nc.node_id=n.node_id AND nc.content_type='text' AND nc.ignored=FALSE LEFT JOIN $tabcontenttext ct ON ct.content_id=nc.content_id AND ct.locale=nl.locale WHERE $where ORDER BY tn.number";
  24.         }
  25.         else {
  26.             $sql="SELECT nl.name AS node_name, nl.title AS node_title, UNIX_TIMESTAMP(n.created) AS node_created, nl.image AS node_image, nl.abstract AS node_abstract FROM $tabthreadnode tn JOIN $tabnode n ON n.node_id=tn.node_id JOIN $tabnodelocale nl ON nl.node_id=tn.node_id AND nl.locale=$sqllang WHERE $where ORDER BY n.created DESC";
  27.         }
  28.  
  29.         $r = db_query($sql);
  30.  
  31.         if ($r) {
  32.             foreach ($r as $node) {
  33.                 extract($node);
  34.                 $title = $node_title;
  35.                 $uri = false;   // "/$lang/$node_name";
  36.                 $created = $node_created;
  37.                 $description = preg_replace('/(\r\n|\r|\n)+/', ' - ', preg_replace('/[\t ]+/', ' ', strip_tags($feed_content ? $content_text : $node_abstract)));
  38.                 $image_uri = false; // $node_image;
  39.                 $image_size = $image_uri ? filesize(ROOT_DIR . $image_uri) : 0;
  40.                 $image_type = $image_uri ? file_mime_type(ROOT_DIR . $image_uri) : false;
  41.                 $itemlist[] = compact('title', 'uri', 'created', 'description', 'image_uri', 'image_size', 'image_type');
  42.             }
  43.         }
  44.     }
  45.  
  46.     $description = translate('description', $lang);
  47.  
  48.     $output = view('rssfeed', false, compact('lang', 'description', 'itemlist'));
  49.  
  50.     return $output;
  51. }

Si $rss_description vaut 'content', le flux est construit avec les contenus de type texte des nœuds des fils définis par $rss_thread et ordonné par leurs numéros, sinon, le flux est directement construit avec les extraits des nœuds et ordonné par leurs dates de création.

La description du flux est reprise de la description du site web définie dans strings.inc.

Pour associer l'URL simplifiée de chaque nœud à son titre dans la liste des items, mettez $uri à "/$lang/$node_name". IMPORTANT : Ajoutez les numéros des fils dans $rss_thread au paramètre de configuration $default_folder dans config.inc.

Si des nœuds ont des images, mettez $image_uri à $node_image pour les ajouter au flux RSS.

La balise <head> du document HTML d'une page contient toujours un lien sur le flux RSS :

<link rel="alternate" href="http://www.izend.org/fr/rss" type="application/rss+xml" title="izend.org RSS" />

Pour donner accès au flux RSS dans une page, ajoutez un lien comme dans les vues link et social, des vues qui peuvent tout simplement être insérées dans la page d'accueil à l'aide d'un contenu du type insertion :

RSS

<a class="rss" href="<?php echo $base_path; ?>/fr/rss" target="_blank" rel="nofollow" title="Inscrivez-vous au flux RSS"><span>RSS</span></a>

RSS

Le logo affiché sur la page du flux RSS est l'image contenu dans le fichier siteqr.png dans le dossier logos.

Voir la balise <image> générée par la vue rssfeed :

  1.     <image>
  2.         <title><?php echo $sitename; ?></title>
  3. <?php if ($lang): ?>
  4.         <link><?php echo $base_url; ?>/<?php echo $lang; ?></link>
  5. <?php else: ?>
  6.         <link><?php echo $base_url; ?></link>
  7. <?php endif; ?>
  8.         <url><?php echo $base_url; ?>/logos/siteqr.png</url>
  9.         <width>50</width>
  10.     </image>
VOIR AUSSI

translate, head

Commentaires

Votre commentaire :
[p] [b] [i] [u] [s] [quote] [pre] [br] [code] [url] [email] strip aide 2000

Entrez un maximum de 2000 caractères.
Améliorez la présentation de votre texte avec les balises de formatage suivantes :
[p]paragraphe[/p], [b]gras[/b], [i]italique[/i], [u]souligné[/u], [s]barré[/s], [quote]citation[/quote], [pre]tel quel[/pre], [br]à la ligne,
[url]http://www.izend.org[/url], [url=http://www.izend.org]site[/url], [email]izend@izend.org[/email], [email=izend@izend.org]izend[/email],
[code]commande[/code], [code=langage]code source en c, java, php, html, javascript, xml, css, sql, bash, dos, make, etc.[/code].