.---+-=[ Implantons RSS dans votre site ]=------+---------------------------=[11]=----.
| i| \__________________ ___ __ _ |
| I| \ |
| I| '-=[Nothing94 ]=-|
| // |
| L\:-=[Ak : Le syndicat du web est rendu à votre porte ]=--------------[~~~~~~~~~~~~]-----|
| \ / |
'________________________________________________________________________.I[MK-110]I.______'
+-----------+-------------------------------+
| Mots clés | Quoi, Pourquoi, Pour qui |
+-----------+-------------------------------+
Premièrement, RSS est pour "Really Simple Syndication". Deuxièmement, c'est
rien de compliqué. Ce nouveau standard sert uniquement aux dépendants
d'internet. C'est un peu le principe d'Illico de Videotron où l'on peut
regarder les films que l'on veut lorsque l'on désire, et ce, dans le confort de
la maison. Donc, par analogie, l'usager peut lire les nouvelles de 400 sites
web - dont le vôtre - via un seul et unique programme ou client email qui
supporte les newsfeeds. Ceci lui permet alors d'éviter le long processus de
taper les adresses des sites web dans son browser, de scroller à travers la
publicité pour lire les headlines et de gosser ici et là. Il a accès à tous les
headlines à un seul endroit, et dans bien des cas, il a l'article intégral sans
avoir à cliquer sur un url qui se rend au site. C'est ce que j'appelle avoir de
l'information de manière condensée pour bien cohabiter avec un monde de
surconsommation. Toutefois, les newsfeeds ont certains désavantages au niveau
de l'expérience du navigateur. C'est-à-dire que lorsque vous regardez des
newsfeeds, c'est comme si vous lisiez des emails. Tout est fade, sans couleurs,
sans attraits, sans contenu superflu ou additionnel. Vous êtes encadrés par le
contenu strictement. Bien sûr le contenu peut être en format html, mais cela
reste un contenu qui ne change pas de format à la base. Nous nous rendons alors
compte si ce n'est déjà fait, que cette technologie sert uniquement pour les
sites de nouvelles ou les blogs où chaque information peut se séparer en
morceau indépendamment du reste du site.
+-----------+-------------------------------+
| Mots clés | Comment |
+-----------+-------------------------------+
Comme je disais précédemment c'est très simple. Tout ce qu'il vous faut, c'est
un fichier xml contenant les dernières nouvelles de votre site. Nous verrons
ici le format RSS 2.0. Si vous voulez utiliser des versions antérieures comme
0.91 ou 0.92, c'est votre problème. Si vous voulez utiliser RDF, c'est votre
problème. Notez que je n'ai pas décelé d'utilité à utiliser le format RDF qui
est plus complexe mais qui n'offre pas grand chose de plus à la fin. Après
tout, le but premier est d'informer rapidement, et non de réinventer le web.
+-----------+-------------------------------+
| Mots clés | Exemple RSS |
+-----------+-------------------------------+
hall of nothingness
http://nothing94.250x.com
Project what you want to be, anyway you are nothingfr-cadieforyoursins@hotmail.comSat, 21 Aug 2004 15:21:38 EST1440Updates internes
http://nothing94.250x.com/news1.html#Updates_internes
<p>Hourra, des updates majeures ont été faites dans le code. En résumé, plus d'orienté objets dans les scripts php, le xhtml est dans des templates Smarty, et il y a maintenant un RSS feed.</p>Sat, 21 Aug 2004 00:00:00 ESTNouvelle image : Looking Glass
http://nothing94.250x.com/news1.html#Nouvelle_image_:_Looking_Glass
Dans la section Pictures/Artworks.Tue, 27 Jan 2004 00:00:00 EST
Nous voyons la définition du xml, la définition du document rss, le channel,
puis la définition du site web, pour finalement lister le contenu.
+-----------+-------------------------------+
| Mots clés | Spécification RSS |
+-----------+-------------------------------+
1 - Mettre l'élément
2 - Mettre l'élément
3 - Mettre l'élément
4 - Mettre les infos du site sous l'élément
+------------------------------------------------------------------+
| Éléments obligatoires |
+----------------+-------------------------------------------------+
| title | Titre de votre site |
| link | Url vers votre site |
| description | Description de votre site |
+----------------+-------------------------------------------------+
| Éléments optionnels |
+----------------+-------------------------------------------------+
| language | |
| copyright | Puisque vous savez ou |
| managingEditor | devriez tous savoir lire |
| webMaster | l'anglais, et que la |
| pubDate | traduction de ces éléments |
| lastBuildDate | demanderait beaucoup de |
| category | temps de ma part. Je vous |
| generator | invite à lire le site |
| docs | http://blogs.law.harvard.edu/tech/rss |
| cloud | qui contient toutes les |
| ttl | définitions nécessaires |
| image | et spécifications |
| rating | pour utiliser ces éléments |
| textInput | efficacement. Merci de |
| skipHours | votre compréhension. |
| skipDays | |
+----------------+-------------------------------------------------+
5 - Mettre les dernières nouvelles de votre site sous l'élément
5.1 - Pour chaque nouvelle, mettez un élément
5.2 - Mettez les infos de la nouvelle sous l'élément
+------------------------------------------------------------------+
| Éléments obligatoires |
+----------------+-------------------------------------------------+
| title | Titre de votre nouvelle |
| link | Url vers votre nouvelle |
| description | Description de votre nouvelle ou texte intégral |
+----------------+-------------------------------------------------+
| Éléments optionnels |
+----------------+-------------------------------------------------+
| author | Puisque vous savez ou devriez tous savoir lire |
| category | l'anglais, et que la traduction de ces éléments |
| comments | demanderait beaucoup de temps de ma part. Je |
| enclosure | vous invite à lire le site |
| guid | http://blogs.law.harvard.edu/tech/rss |
| pubDate | qui contient toutes les définitions nécessaires |
| source | et spécifications pour utiliser ces éléments. |
+----------------+-------------------------------------------------+
+-----------+-------------------------------+
| Mots clés | Création du newsfeed avec PHP |
+-----------+-------------------------------+
J'ai décidé ici de rendre entièrement indépendant le module qui construit la
définition RSS. Le code suivant peut donc être utilisé directement comme
source. C'est-à-dire que nous n'avons pas à générer de fichier xml puisque
cette page php va construire au runtime un fichier up-to-date. Notez que vous
n'avez besoin que des dernières nouvelles du site considérant que ce n'est pas
de l'archivage que vous faites. Notez également que les aggregators (Programme
pour lire les news feed) conservent à l'interne les vieilles nouvelles si vous
le désirez.
+------------------------------------------------------------------+
| Fichier ./rss/index.php |
| Objet : Génère le fichier xml et l'imprime au STDOUT |
+------------------------------------------------------------------+
login('../include/login.ini',DB_NAME)
or die("Connection failed: " . mysql_error());
# GET LATEST NEWS *********************************
$query = "SELECT date,time,topic,text FROM news WHERE page='1' ORDER BY date DESC,time DESC";
$query_result = mysql_query($query) or die("Query failed: " . mysql_error());
# CREATE RSS **************************************
$xml = new XmlWriter('ISO-8859-1');
$xml->push('rss', array('version' => '2.0'));
$xml->push('channel');
$xml->element('title','hall of nothingness');
$xml->element('link','http://nothing94.250x.com');
$xml->element('description','Project what you want to be, anyway you are nothing');
$xml->element('language','fr-ca');
$xml->element('webMaster','dieforyoursins@hotmail.com');
$xml->element('pubDate',Utils::getDateRFC822(time()));
$xml->element('ttl','1440');
# Process each news
while ($row = mysql_fetch_assoc($query_result)) {
$xml->push('item');
$xml->element('title',$row['topic']);
$xml->element('link','http://nothing94.250x.com/news1.html#'.
htmlentities(str_replace(' ','_',$row['topic'])));
$xml->element('description',$row['text']); # Note : My text contains html
$xml->element('pubDate',Utils::getDateRFC822(strtotime($row['date'])));
$xml->pop(); # item
}
$xml->pop(); # channel
$xml->pop(); # rss
print $xml->getXml();
?>
+------------------------------------------------------------------+
| EOF |
+------------------------------------------------------------------+
+------------------------------------------------------------------+
| Fichier ./include/XmlWriter.php |
| Objet : Module cheapo pour créer un fichier xml |
+------------------------------------------------------------------+
indent = $indent;
$this->xml = "\n";
}
function _indent() {
for ($i = 0, $j = count($this->stack); $i < $j; $i++) {
$this->xml .= $this->indent;
}
}
function push($element, $attributes = array()) {
$this->_indent();
$this->xml .= '<'.$element;
foreach ($attributes as $key => $value) {
$this->xml .= ' '.$key.'="'.$this->_xmlentities($value).'"';
}
$this->xml .= ">\n";
$this->stack[] = $element;
}
function element($element, $content, $attributes = array()) {
$this->_indent();
$this->xml .= '<'.$element;
foreach ($attributes as $key => $value) {
$this->xml .= ' '.$key.'="'.$this->_xmlentities($value).'"';
}
$this->xml .= '>'.$this->_xmlentities($content).''.$element.'>'."\n";
}
function emptyelement($element, $attributes = array()) {
$this->_indent();
$this->xml .= '<'.$element;
foreach ($attributes as $key => $value) {
$this->xml .= ' '.$key.'="'.$this->_xmlentities($value).'"';
}
$this->xml .= " />\n";
}
function pop() {
$element = array_pop($this->stack);
$this->_indent();
$this->xml .= "$element>\n";
}
function getXml() {
return $this->xml;
}
function _xmlentities($element) {
$patterns = array("/&/" ,"/" ,"/>/" ,"/\"/" ,"/'/");
$replacements = array('&','<','>','"',''');
return preg_replace($patterns, $replacements, $element);
}
}
?>
+------------------------------------------------------------------+
| EOF |
+------------------------------------------------------------------+
En résumé, le fichier index.php se connecte à la base de données, va chercher
les dernières nouvelles et puis génère un fichier xml qui s'imprime au STDOUT.
Il est à noter que si votre site a beaucoup de visiteurs, il est peu
recommandé de laisser cette page accessible. Il vous est donc recommandé
d'utiliser cette page à l'interne uniquement en créant à tous les X temps un
nouveau fichier xml up-to-date. Donc, pour générer le fichier, vous pouvez y
aller en console avec quelque chose comme :
% php -f index.php > index.xml
Vous pourrez accéder à votre newsfeed avec le url
http://nothing94.250x.com/rss/index.xml
si vous ne rendez pas public index.php, autrement ce sera
http://nothing94.250x.com/rss/index.php
+-----------+-------------------------------+
| Mots clés | Flafla visuel |
+-----------+-------------------------------+
Il ne vous reste plus qu'à mettre sur votre site un beau lien vers votre
fichier xml avec une belle image RSS ou XML ou bien un beau caption "RSS news
feed". Si vous êtes plus hardcore vous pouvez toujours mettre comme caption
"Don't click here".
+-----------+-------------------------------+
| Mots clés | Utilisation de RSS |
+-----------+-------------------------------+
Pour lire les news feed, il va de soi que vous avez besoins de programmes qui
le supporte.
Voici des "aggregators" pouvant lire RSS 2.0
Aggie (.NET)
AmphetaDesk (Windows, Macintosh, Linux)
BlogLines (Server-based)
BottomFeeder (Windows, Macintosh, Unix)
EffNews RSS Reader (Windows)
FeedDemon (Windows)
FeedReader (Windows)
NetNewsWire (Macintosh)
NewsDesk (.NET)
NewsGator (.NET)
NewsIsFree (Server-based)
NewsMonster (Mozilla)
NewzCrawler (Windows)
nntp//rss (Java)
PocketFeed (PocketPC)
PopHeadlines (.NET)
Python Desktop Server (Python)
Radio UserLand (Windows, Macintosh)
RSS Bandit (.NET)
RSS NewsWatcher (Windows)
Sharp Reader (.NET)
Shrook (Macintosh)
SlashDock (Macintosh)
Straw (GNOME)
Syndirella (.NET)
VOX Lite (Windows)
ZOË (Macintosh)
Enclosure-aware aggregators
Ici, j'ai testé avec le news feed intégré dans le email client de Opera ainsi
que Sharp Reader.
+-----------+-------------------------------+
| Mots clés | Gourmandise |
+-----------+-------------------------------+
Pour ceux qui veulent en savoir plus, allez fouillez sur le web pour des
valideurs de RSS, ou pour n'importe quoi d'autre. RSS est simple et efficace,
et personne ne prévoit modifier de beaucoup le format 2.0 outre peut-être des
changements mineurs.
+-----------+-------------------------------+
| Mots clés | Lâcheté |
+-----------+-------------------------------+
Si vous êtes lâche ou bien que vos doigts sont trop gros pour taper sur un
clavier et ainsi programmer ce dont vous avez besoin, sachez qu'il existe des
outils pour générer votre/vos fichier(s) RSS.
Blogger (Mark Gardner)
JournUrl (Roger Benningfield)
Manila (UserLand)
Movable Type (Mark Pilgrim)
Nucleus CMS (Wouter Demuynck)
Radio UserLand (UserLand)
Je ne les ai pas essayés et je vous laisse risquer votre vie inutilement.
C'est si simple que ça ne vaut même pas le déplacement.
+-----------+-------------------------------+
| Mots clés | Signature |
+-----------+-------------------------------+
Truly yours, nothing94