logo

NPDS : Gestion de contenu et de communauté


Content & Community Management System (CCMS) robuste, sécurisé, complet, performant, parlant vraiment français, libre (Open-Source) et gratuit.
29 visiteur(s) et 0 membre(s) en ligne.
Activité du Site

Pages vues depuis 25/05/2001 : 108 462 266

  • Nb. de membres 8 693
  • Nb. d'articles 1 695
  • Nb. de forums 26
  • Nb. de sujets 8
  • Nb. de critiques 92

Top 10  Statistiques

Index du forum »»  Questions »» Flux RSS

Nouveau sujet
 Flux RSS#24043Répondre

2Contributeur(s)
coolzen0Hotfirenet
3 Modérateur(s)
developpeurjpbJireck
coolzen0 coolzen0icon_post
Quelqu'un aurait un module qui permette de créer automatiquement un flux RSS à partir des articles ?
Merci d'avance
Hotfirenet Hotfireneticon_post
backend.php
coolzen0 coolzen0icon_post
Ok merci.
Je vais me l'étudier avec d'autres trucs que j'ai trouvé sur le net parce que moi je veux que ce soit des articles pris au hasard et je veux pouvoir paramétrer le nombre d'article.
Encore merci.
coolzen0 coolzen0icon_post
Bon voilà !
Du coup j'ai reliée la fonction qui permet de créer un flux rss (fichier nommé rss.xml à la racine) à la fonction qui permettait d'afficher le bloc des articles aléatoire... voir là bas pour l'historique : http://www.npds.org/viewtopic.php?topic=24038&forum=9

Je découpe ma réponse en plusieurs post parce que ça ne passe pas sinon...


Message édité par : coolzen0 / 03-12-2008 17:40

coolzen0 coolzen0icon_post
Donc au final ça me donne un fichier que j'ai appellé blocAleart.php et qui contient ça :

Début du fichier : la fonction aleart.



<?PHP
#autodoc aleart(x) : Bloc de liste de x articles pris de façon aléatoire <br />=> syntaxe : function#aleart puis params#5
#autodoc aleart_rss(x) : idem aleart() mais avec la création d'un flux rss en plus juste après...

//fonction aleart qui affiche dans le bloc x articles pris au hasard ; le x articles étant défini par le params#5 dans l'appel => 5 ici...
function aleart(&$nb) {
   global 
$articles$language;

   
$result mysql_query("select sid, title from stories order by rand() limit 0,$nb");
   
   $numrows = mysql_num_rows($result);

   if ($numrows == 0) 
{
      return;
   
} else {
      $boxstuff .= 
"<ul>";   
      while (list($article_id, $article_titre) = mysql_fetch_row($result)) 
{
               $boxstuff .= 
"<li><a href=\"article.php?sid=$article_id\">$article_titre</a></li>";
      
}
      $boxstuff .= 
"</ul>";         
      
      global $block_title;
      if ($block_title==
"")
         $title=translate(
"Hasard");
      else
         $title=$block_title;
      themesidebox($title, $boxstuff);
   
}
}



coolzen0 coolzen0icon_post
Suite du fichier : La fonction aleart_rss.



//fonction aleart + buildRss (idem que précédemment, le nombre d'article est défini par params#5 ; exemple pour 5 articles...)
function aleart_rss(&$nb) {
   aleart($nb);
   buildRSS($nb);
}



coolzen0 coolzen0icon_post
Suite du fichier : la fonction confXML


//fonction pour remplacer les caractères génants
function conf_XML($text)
{
$text = str_replace("&","&amp;",$text);
$text = str_replace("&lt;","&lt;",$text);
$text = str_replace("&gt;","&gt;",$text);
$text = str_replace("\"","&quot;",$text);

return $text;
}


coolzen0 coolzen0icon_post
Bon, je n'avais pas fini la dernière fois. Il faut aussi que je mette la fonction buildRSS($nb) mais j'ai du mal à la poster et ça m'énerve un peu.. aller, je retente.
coolzen0 coolzen0icon_post


function buildRSS($nb) {

// En-tête du flux RSS version 2.0
$xml = '<?xml version="1.0" encoding="ISO-8859-1"?><rss version="2.0">';
$xml .= '<channel><title>WESRA - Web ESRA</title><link>http://wesra.free.fr/</link>';
$xml .= '<description>WESRA - Web Encyclopedie du Savoir Relatif et Absolu</description><language>fr-fr</language><copyright>Copyright 2008 wesra.free.fr</copyright>';

// Ajout de la date actuelle de publication (suivant la DTD RSS)
$xml .= '<lastBuildDate>'.date(
"D, d M Y H:i:s").' GMT</lastBuildDate>';


coolzen0 coolzen0icon_post


// paramêtres de connection à votre base de donnée (inutile ici car déjà fait en amont par NPDS)
//$host = 'sql.free.fr';
//$login = 'monLogin';
//$password = 'monPassword';
//$bdd = 'maBaseDeDonnée';

coolzen0 coolzen0icon_post


//mysql_connect($host,$login,$password);
//mysql_select_db($bdd);

coolzen0 coolzen0icon_post


// Sélection de 10 articles aléatoires
$Result = mysql_query("select sid, title, DATE_FORMAT(time, '%a, %d %b %Y %H:%i:%s') as date_heure, hometext from stories order by rand() limit 0,$nb");

// Creation des items : titre + lien + description + date de publication
while($val=mysql_fetch_array($Result)) {
    $xml .= '<item>';
    $xml .= '<title>'.conf_XML($val["title"]).'</title>';
    $xml .= '<link>http://wesra.free.fr/article.php?sid='.$val["sid"].'</link>';
    //$xml .= '<description>'.conf_XML($val["hometext"]).'</description>';
    //$xml .= '<description>en savoir plus sur '.conf_XML($val["title"]).'...</description>';
    $xml .= '<description><![CDATA['.$val["hometext"].']]></description>';
    //$xml .= '<pubDate>'.date("D, d M Y H:i:s",$val["time"]).' GMT</pubDate>';
    $xml .= '<pubDate>'.$val["date_heure"].' GMT</pubDate>';
    $xml .= '</item>';
}

coolzen0 coolzen0icon_post


// Déconnexion (inutile ici)
//mysql_close();

// Fin du flux
$xml .="</channel></rss>";

// Ecriture du flux dans un fichier xml
$fp = fopen("rss.xml", 'w+');
      fputs($fp, $xml);
fclose($fp);

}

?>


coolzen0 coolzen0icon_post
Et j'appelle mon bloc comme ça :


!include!#blocAleart.php
function#aleart_rss
params#5



ATTENTION : Sans le ! qui se mettent tout seul ici de chaque côté de l'includ
pour aficher 5 articles aléatoire dans le bloc et créer le fichier rss avec 5 articles aléatoire... Ce qui fait qu'à chaque fois que quelqu'un va sur le site un flux RSS est créé sans que je n'ai rien à faire...
Bon, c'était pour répondre à mon besoin mais vous devriez trouver votre bonheur dans ces fonctions si vous vous intéressez aux flux RSS ;-)
Hotfirenet Hotfireneticon_post
arrete de poster ton code comme ca met le dans un fichier et envoi le moi, ou sur module