Projet Webmaster PHP
Portail PHP




Flux de syndication

 
  
 



A qui s'adresse la syndication ?

Sauf à disposer d'un site web qui prend déjà en charge la syndication de contenu (exemple du CMS SPIP utilisé sur http://phortail.org/webntic/ ), il est nécessaire que le site soit dynamique et construit autour d'une base de données (Php MySql par exemple), avec du contenu indexé.
Il va être alors possible de générer un flux

Le Flux XML

La première étape sera de constituer le flux.
Basé sur XML (eXtended Markup Language) et sa syntaxe propre, il va permettre de créer une page qui pourra être lue par un agrégateur

Composition du flux XML

Le fLux doit répondre à une syntaxe spécifique au langage XML utilisé ainsi qu'aux particularités de la base de données.
Voici un exemple classique construit autour d'une table articles, avec la particularité d'utiliser une fonction date pour générer la date selon le format requis par XML et conforme à la RFC 822.


<?
function daterss($numdate) {
$numdate = date("D, d M Y H:i:00 +0100",strtotime($numdate));
return $numdate;
}

$db = @mysql_connect("$sql_serveur", "$sql_login", "$sql_password") OR DIE("Désolé, la Base est en cours de maintenance !");
@mysql_select_db("$sql_base",$db) OR DIE;

$query = "SELECT * FROM articles ORDER BY date DESC";
$result = mysql_query ($query) or die ("La requête a échouée : ".mysql_error());
$nb_msg = mysql_num_rows($result);

@header("Content-type: application/rss+xml");
$xml = '<'.'?xml version="1.0" encoding="iso-8859-1"?'.'><rss version="2.0"><channel>';

$xml .='<title>Publications Projet Webmaster</title>';
$xml .='<link>http://phortail.org/page-webmaster.html</link>';
$xml .='<description>Aide à la création de portail en pages dynamiques, depuis la conception jusqu\'au référencement </description>';
$xml .='<managingEditor>phortail@gmail.com</managingEditor>';
$xml .='<language>fr</language>';
$xml .='<generator>Phortail</generator>';
$xml .='<copyright>Phortail</copyright>';
$xml .='<webMaster>phortail@gmail.com (Phortail Webmaster)</webMaster>';

while ($msg_data = mysql_fetch_array($result))
{
$id = $msg_data['id'];

$titre = $msg_data['title'];
$news = stripslashes(trim($msg_data['texte']));
$news = str_replace("<BR>",'<BR/>',$news);
$news = str_replace("&",'&',$news);
$news = str_replace("<","<",$news);
$news = str_replace(">",">",$news);

$daterfc=daterss($msg_data['date']);

$xml .='<item>';
$xml .='<author>'.$msg_data['mail'].'</author>';
$xml .='<title>'.$titre.'</title>';
$xml .='<link>http://phortail.org/page-webmaster-'.$id.'.html</link>';
$xml .='<pubDate>'.$daterfc.'</pubDate>';
$xml .='<guid>http://phortail.org/page-webmaster-'.$id.'.html</guid>';
$xml .='<comments>http://phortail.org/page-webmaster-'.$id.'.html</comments>';
$xml .='<description>';

$xml .= $news;

$xml .='</description></item>';
}
mysql_close();
$xml .='</channel></rss>';
echo $xml;
?>

Il ne reste ensuite qu'a mettre cette page sur le site web puis de faire valider en ligne ce flux avec par exemple http://feedvalidator.org/
Le flux est alors disponible pour être lu par un agrégateur de flux.

 
 

18 visiteurs connectés