[News] Générer son flux RSS : Explications

Sujet déplacé le mercredi 16 avril 2008 : 17:42

Sujet déplacé le mercredi 16 avril 2008 : 17:32

Bonsoir;

Je vous propose d'ajouter la possibilité de générer à partir des dernières news...
Déposez le fichier dans le module news sous le nom rss.php. Pour générer le fichier, créer un lien "index.php?mod=news&ac=rss"

Fichier en téléchargement sur :
http://clos.matines.free.fr/index.php?mod=download

Merci d'être indulgent, je débute en php. En fait c'est mon premier code. Je pense qu'il peut être grandement amélioré.


Code PHP :
Pour copier le contenu exact du code,
Veuillez citer le message
  1. <?php
  2. // Permet de générer un fichier rss à partir des dernières news
  3. // Nommer ce fichier  "rss.php" et le placer dans Module/news
  4. // --------------------------------
  5. // Codé par Fifi69
  6. //  Mise a jour : 25/03/08 15:00
  7. // Merci Steff et Garveur pour leurs tests, conseils et corrections ...
  8. // --------------------------------
  9.  
  10. if (! (defined ('__KWS__'))) { die ('Erreur d'appel de fichier.'); }
  11.  
  12. $rss_file = 'flux/rss.xml'; // Emplacement et nom fichier xml
  13. $id_grp = '1'; // Grade par défaut
  14.  
  15. //$rss_puce = 'flux/puce.png' // Ne pas dépasser 80 px
  16.  
  17. $rss_nb    = $_POST['int_rss_nb'];
  18. $rss_grade = $_POST['int_rss_grade'];
  19.  
  20. if (get_grade() >= GRD_MODOG)
  21. {
  22.     bloc_head('Mise à jour du RSS');
  23.     if ($rss_grade == '' || is_numeric($rss_nb) == false)
  24.     {
  25.         // Affichage des options : Nombre de news et grades maximum
  26.         echo '        
  27.         <form name="formulaire" method="post" action="index.php">
  28.         <input type="hidden" name="mod" id="mod" value="news" />
  29.     <input type="hidden" name="ac" id="ac" value="rss" />
  30.     <fieldset>
  31.         
  32.         <p>
  33.         <label style="display: inline; float: left; width: 200px;" for="nom_page2">Création du fichier :</label>
  34.         <strong>'.ax($url_site).$rss_file.'</strong>
  35.         </p>
  36.         <p>
  37.         <label style="display: inline; float: left; width: 200px;" for="grade">Grade maximum de la catégorie :</label>
  38.           <select name="int_rss_grade" id="int_rss_grade">
  39.       <option value="0" >Visiteurs</option>
  40.       <option value="">---------------------</option>';
  41.       // Recherche des grades et remplissage de la liste déroulante
  42.       $req_grp = reqmysql('SELECT `id`, `nom` FROM `groupes_grp`');
  43.       while ($grp = mysql_fetch_object($req_grp))
  44.       {
  45.                   $grp_id = $grp->id;
  46.                   if ($grp_id == $id_grp)
  47.                   {
  48.                     echo '
  49.                     <option value="'.$grp_id.'" selected="selected">'.$grp->nom.'</option>';
  50.                   }
  51.                   else
  52.                   {
  53.                     echo '
  54.                     <option value="'.$grp_id.'">'.$grp->nom.'</option>';
  55.                   }
  56.              }
  57.        echo '
  58.        </select>
  59.   </p>
  60.   <p>
  61.         <label style="display: inline; float: left; width: 200px;" for="nb">Nombre de news :</label>
  62.         <input type="text" value="5" name="int_rss_nb" id="int_rss_nb" size="2" />
  63.     </p>
  64.     <p>
  65.         <input type="submit" id="submit" value="Générer" onsubmit="return controle()" />
  66.     </p>
  67.     </fieldset>
  68.   </form>';
  69.     }
  70.     else
  71.     {
  72.         // Début du fichier XML
  73.         $xml = '<?xml version="1.0" encoding="iso-8859-1"?>' .chr(13);
  74.         $xml .= '<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">' .chr(13);
  75.         $xml .= '<channel>' .chr(13);
  76.         $xml .= '<atom:link href="'.ax($url_site).'flux/rss.xml" rel="self" type="application/rss+xml" />' .chr(13);
  77.         $xml .= '<title>'.ax($nom_page).'</title>' .chr(13);
  78.         $xml .= '<link>'.ax($url_site).'</link>' .chr(13);
  79.         //$xml .= '<image>' .chr(13);
  80.         //$xml .='<url>'.ax($url_site).'favicon.png</url>' .chr(13);
  81.         //$xml .='<link>'.ax($url_site).'</link>' .chr(13);
  82.         //$xml .='</image>' .chr(13);
  83.         $xml .= '<description>Les dernieres news</description>' .chr(13);
  84.         $xml .= '<language>fr</language>' .chr(13);
  85.         $xml .= '<generator>KwsPHP</generator>' .chr(13);
  86.         //$xml .= '<copyright>Clos des Matines</copyright>' .chr(13);
  87.         $xml .= '<copyright>'.bbcode($copyrights,0,0,1,1).'</copyright>' .chr(13);
  88.         $xml .= '<webMaster>'.ax($email_expediteur).' ('.ax($nom_page).')</webMaster>' .chr(13);
  89.         $xml .= '<ttl>15</ttl>' .chr(13) .chr(13);
  90.         //    $puce_size = filesize($rss_puce);
  91.         
  92.         // extraction des données
  93.         $res=reqmysql('SELECT news.*, article_cat.grade, article_cat.image as image FROM news INNER JOIN article_cat ON article_cat.id = news.ref WHERE article_cat.grade <= '.$rss_grade.' ORDER BY news.date DESC LIMIT 0 , '.$rss_nb);
  94.         
  95.         // Remplissage des items
  96.         while($tab=mysql_fetch_array($res))
  97.         {   
  98.             $titre=$tab['titre'];
  99.             $lien=$tab['id'];
  100.             $description=$tab['titre'];
  101.             $date=date("D, d M Y H:i:s", $tab['date']);
  102.             $ico = $tab['image'];
  103.             
  104.             $xml .= '<item>' .chr(13);
  105.             $xml .= '<title>'.$titre.'</title>' .chr(13);
  106.             //$xml .= '<enclosure '.ax($url_site).'image/puce1.gif" length="'.$puce_size.'" type="image/gif" />' .chr(13);
  107.             $xml .= '<link>'.ax($url_site).'index.php?mod=news&ac=commentaires&id='.$lien.'</link>' .chr(13);
  108.             $xml .= '<pubDate>'.$date.' GMT</pubDate>' .chr(13); 
  109.             $xml .= '<description>'.$description.'</description>' .chr(13);
  110.             $xml .= '<guid isPermaLink="true">'.ax($url_site).'/index.php?mod=news&ac=commentaires&id='.$lien.'</guid>' .chr(13);
  111.             $xml .= '</item>' .chr(13) .chr(13);    
  112.         }
  113.             
  114.         // Fin du fichier XML
  115.         $xml .= '</channel>' .chr(13);
  116.         $xml .= '</rss>';
  117.         
  118.         // écriture du fichier
  119.         $fp = fopen("./".$rss_file, 'w+');
  120.         fputs($fp, $xml);
  121.         fclose($fp);
  122.         chmod("./".$rss_file, 0777 );
  123.         
  124.         // $txt=str_replace("<","<",$xml);
  125.                 $txt=str_replace("<","<",$xml);
  126.         $txt=str_replace(chr(13),"<br />",$txt);
  127.         
  128.         echo '
  129.         <div style="text-align:center;">Fichier déposé à l'emplacement suivant</div>
  130.         <div style="text-align:center;font-weight: bold ;">'.ax($url_site).$rss_file.'<br /><br />
  131.             - <a href="http://validator.w3.org/feed/check.cgi?url='.ax($url_site).$rss_file.'" target="_blank">Contrôler sa validité</a> -<br />
  132.             - <a href="index.php?mod=news&ac=gestion">Retour</a> -</div><hr />
  133.         <div style="text-align:left;">'.$txt.'</div>';
  134.         
  135.     }
  136. close_table();
  137. }
  138. else
  139. {
  140.     ZoneReserve();
  141. }
  142. $aff_drt=1;
  143. ?>


Edité samedi 22 mars 2008 : 11:20 par mike007

Edité mercredi 26 mars 2008 : 15:28 par Fifi69


Sujet écrit par Fifi69 le vendredi 21 mars 2008 à 22:41

[ Imprimer ] - [ Fermer la fenêtre ]