Flux RSS et Atom

Cet article explique comment générer un flux RSS ou Atom à partir des pages modifiées de votre site. J’utilise pour cela l’extension  ecorss de Fabien Udriot à laquelle j’ai contribué activement au mois de février 2008.

Cahier des charges

Comme exemple concret, je souhaite générer 2 flux de nouvelles pour 2 parties distinctes de mon site. En l’occurence, pour les tutoriels sur LaTeX et ceux sur TYPO3. J’ai donc une structure comme celle-ci :

Tutoriels
|-- TYPO3
| |-- page 1
| `-- page 2
`-- LaTeX
|-- page 1
|-- page 2
`-- page 3

et je souhaite être averti par des flux RSS / Atom différents des modifications dans la partie TYPO3 et dans celle concernant LaTeX.

Par ailleurs, je souhaite que les flux soient spécifique aux langues disponibles sur mon site. Puisque mes rubriques sont traduites en anglais, j’en veux autant pour les flux RSS / Atom.

Pré-requis

Commençons par installer les pré-requis à l’extension ecorss, à savoir :

  1.  div : Static Methods for Extensions
  2.  lib : Library for Extensions

Installons maintenant l’extension  ecorss. Puis, étape indispensable, ajoutons-la comme extension statique à notre Template, comme indiqué dans la documentation.

Configuration

Dans le template TS, nous allons configurer deux flux Atom comprenant les 10 dernières modifications dans les rubriques TYPO3 et LaTeX. La page d’accueil de TYPO3 a l’id 13, et celle de LaTeX, l’id 9.

plugin.tx_ecorss.feed = atom
 
page.headerData.12 = USER
page.headerData.12.userFunc = tx_ecorss_controllers_feed->add
 
	# Feed for TYPO3 news
page.headerData.12.feed1{
	title = Tutoriels TYPO3
	typeNum = 122
	url = news-typo3.xml
}
 
	# Feed for LaTeX news
page.headerData.12.feed2{
	title = Tutoriels LaTeX
	typeNum = 123
	url = news-latex.xml
}

Dans le cas des nouvelles pour TYPO3, nous avons une traduction anglais à disposition et souhaitons proposer la version anglaise du flux Atom aux visiteurs qui affichent cette rubrique en anglais (L = 1).

[globalVar = GP:L=1]
 
	# Feed for TYPO3 news
page.headerData.12.feed1 {
	title = TYPO3 Tutorials (English)
	typeNum = 124
	url = news-typo3-en.xml
}
 
[global]

Il ne nous reste plus qu’à finaliser la configuration de nos différentes sources de nouvelles.

	# TYPO3 Feed Configuration
feed1 = PAGE
feed1 {
	typeNum = 122
 
	10 >
	10 = USER
	10 {
		encoding = iso-8859-1
		userFunc = tx_ecorss_controllers_feed->display
		lang = fr-FR
		sysLanguageUid = 0
 
		numberItems = 10
		pidRootline = 13
 
		title = TYPO3
		subtitle = Résumé des modifications dans les tutoriels TYPO3
	}
 
	config {
		disableAllHeaderCode = 1
		additionalHeaders = Content-type:text/xml
		no_cache = 1
		xhtml_cleaning = 0
		admPanel = 0
		disableCharsetHeader = 1
	}
}
 
	# LaTeX Feed Configuration
feed2 < feed1
feed2 {
	typeNum = 123
	10 {
		pidRootline = 9
		title = LaTeX
		subtitle = Résumé des modifications dans les tutoriels LaTeX
	}
}
 
	# TYPO3 English Feed Configuration
feed3 < feed1
feed3 {
	typeNum = 124
	10 {
		lang = en-GB
		sysLanguageUid = 1
		subtitle = Modification Summary of TYPO3 Tutorials
	}
}

Configuration de RealURL

Nous avons demandé à l’extension ecorss de générer des flux avec les noms news-typo3.xml, news-latex.xml et news-typo3-en.xml correspondant respectivement aux flux dont les typeNum sont 122, 123 et 124. Il faut maintenant modifier la configuration de RealURL pour y parvenir :

, 'fileName' => array (
        'index' => array(
                 'index.html' => array(
                        'keyValues' => array(
                                'type' => 0,
                        )
                )
                , 'news-typo3.xml' => array(
                        'keyValues' => array(
                                'type' => 122,
                        )
                )
                , 'news-latex.xml' => array(
                        'keyValues' => array(
                                'type' => 123,
                        )
                )
                , 'news-typo3-en.xml' => array(
                        'keyValues' => array(
                                'type' => 124,
                        )
                )
                , '_DEFAULT' => array(
                        'keyValues' => array()
                )
        )

Il ne nous reste plus qu’à tester la validité de notre flux depuis le site  http://feedvalidator.org/

Flattr