3.5.5 Syndication

VenC peut générer un flux Atom ou RSS en suivant la même logique de construction que celle des pages HTML de votre site, c'est-à-dire avec un entête, un corps et un pied de page. Vous pouvez également y utiliser les mêmes motifs que ceux que nous avons vus dans les chapitres 3.5.2, 3.5.3 et 3.5.4.

3.5.5.1 Flux Atom

Nous allons voir ici comment programmer les trois fichiers qui composent le flux Atom :

Pour en savoir plus sur le format Atom lui-même, rendez-vous ici.

atomHeader.xml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <link
      href=".:GetBlogURL:..:GetRelativeLocation:./atom_feed.xml"
      rel="self"
      type="application/atom+xml"
    />
    
    <link href=".:GetBlogURL:." rel="alternate" type="text/html" />
    
    <title>.:GetBlogName:. .:GetThreadName::| {value}:.</title>
    .:GetBlogMetadataIfNotNull::blog_description::<subtitle>{value}</subtitle>:.
    <id>.:GetBlogURL:..:GetRelativeLocation:.</id>
    <updated>.:GetLastEntryTimestamp::%Y-%m-%dT%H:%M:%SZ:.</updated>

    <author>
     .:GetBlogMetadataIfNotNull::author_name::<name>{value}</name>:.
     .:GetBlogMetadataIfNotNull::author_email::<email>{value}</email>:.
    </author> 

Comme on peut le voir, il y a des similitudes avec ce qui a été réalisé et montré dans le chapitre 3.5.2.

Les nouveautés ici, c'est que l'on construit des URL uniques avec GetBlogURL et GetRelativeLocation comme on peut le voir aux lignes 4, 9 et 13.

On utilise également à la ligne 14 le motif GetLastEntryTimestamp pour avoir l'horodatage de la dernière publication du site.

atomEntry.xml

1
2
3
4
5
6
7
8
9
    <entry>
        <id>.:GetBlogURL:./.:GetEntryPath:.</id>
        <title>.:GetEntryTitle:.</title>
        <link href=".:GetBlogURL:./.:GetEntryPath:." rel="alternate" type="text/html"/>
        <updated>.:GetEntryDate::%Y-%m-%dT%H:%M:%SZ:.</updated>
        <content type="xhtml">
            <div xmlns="http://www.w3.org/1999/xhtml">.:GetEntryPreview:.</div>
        </content>
    </entry>

Ici, nous utilisons à la ligne 7 GetEntryPreview. Ici ça a du sens, car nous sommes dans un flux Atom dont le but est de présenter succinctement les dernières publications. Rien ne vous empêche cependant d'utiliser GetEntryContent.

Comme dans atomHeader.xml, on crée aux lignes 2 et 4 une même URL unique qui correspond à la publication avec GetBlogURL et GetEntryPath que nous avons déjà vu dans les chapitres précédents.

atomFooter.xml

</feed>

Facile !

3.5.5.2 Flux RSS

Nous allons voir ici comment programmer les trois fichiers qui composent le flux RSS :

Pour en savoir plus sur le format RSS, rendez-vous ici.

rssHeader.html

1
2
3
4
5
6
<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
      <title>.:GetBlogName:. .:GetThreadName::| {value}:.</title>
      <link>.:GetBlogURL:..:GetRelativeLocation:.</link>
      <description>.:GetBlogDescription:.</description> 

Sans grande surprise, ça fonctionne un peu comme le flux Atom vu au chapitre 3.5.5.1.

On indique dans l'entête, aux lignes 5 et 7, l'URL du site avec GetBlogURL et GetRelativeLocation.

rssEntry.html

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
    <item>
      <title>.:GetEntryTitle:.</title>
      <link>.:GetBlogURL:./.:GetEntryPath:.</link>
      <guid isPermaLink="true">.:GetBlogURL:./.:GetEntryPath:.</guid>
      <pubDate>.:GetEntryDate::%a, %d %b %Y %H:%M:%S GMT:.</pubDate>
      <description>
        <![CDATA[
            .:GetEntryPreview:.
        ]]>
      </description>
    </item> 

L'utilisation de GetBlogURL et de GetEntryPath aux lignes 3 et 4 sert le même usage que celui montré dans atomEntry.xml.

Idem pour GetEntryPreview, on peut également utiliser GetEntryContent.

rssFooter.html

   </channel>
</rss>

Rien à faire de bien compliqué, si ce n'est fermer ce qui a été ouvert. Trivial !