Créer un index : classement alphabétique de mots-clés (articles, etc.)

Souvent décrite, voici une boucle qui permet de publier un index de résultats, trié par ordre alphabétique. Elle est valable pour les sites en charset iso-8859-1 (utilisé longtemps par défaut dans Spip) mais pose problème sur les sites en utf-8 (hors les initiales, le tri n’est pas stricto sensu alphabétique).

Dans une rubrique, un article, etc. vous désirez afficher une liste de résultats triée {par titre}. Lorsque cette liste devient importante, il devient nécessaire de clarifier l’affichage. Par exemple, nous pouvons vouloir afficher notre résultat groupé alphabétiquement avec, en début de page une liste des lettres de l’alphabet à cliquer pour accéder plus vite à la zone recherchée.

Il n’y a pas pour le moment de solution « automatique ». Il faut donc faire une boucle par lettre qui groupe l’ensemble des #TITRE des mots, articles, brèves... commencant par notre lettre. Chaque boucle est appelée depuis le haut de page par une ancre.

Ainsi pour B :

<a href="#Anchor-B">B</a>, renvoie sur la page à une boucle pour B qui utilise le tri {titre==^[bB]} {par titre}. Nous avons donc aussi bien les titres commençant par une minuscule que par une majuscule.

Nous prenons le cas d’un site gérant de nombreux mots-clés. Nous désirons créer une page qui affiche l’ensemble de nos mots-clés au public. Ici l’exemple est tiré d’une page rubrique détournée spécialement pour l’affichage des résultats [1]. Il suffit d’extrapoler pour appliquer l’index à des boucles auteurs, articles, etc.

Exemple, toujours pour cette lettre B :

<B_mots_B><a name="Anchor-B">B</a><br>
<BOUCLE_mots_B(MOTS){titre==^[bB]} {par titre} {", "}>
     <a href=#URL_MOT>#TITRE</a>
</BOUCLE_editeur_B>

Si les mots-clés sont répartis entre plusieurs groupes, nous pouvons faire un index par groupe en rajoutant le critère{id_groupe=1} pour le groupe id=1 :

<B_mots_B><a name="Anchor-B">B</a><br>
 <BOUCLE_mots_B(MOTS){id_groupe=1}{titre==^[bB]} {par titre} {", "}>
    <a href=#URL_MOT>#TITRE</a>
 </BOUCLE_mots_B>

Notre boucle index pour être complète doit être lourdement répètée — et adaptée — 26 fois pour recenser les 26 lettres de l’alphabet latin, avec leurs variantes minuscules-majuscules et signes diacritiqes (accents, tilde, cédille). Il ne faut pas oublier de rajouter une 27e boucle pour les #TITRE commençant par un chiffre. Dans la boucle complète présentée à la fin de l’article, la boucle chiffrée est mise en tête.

Maintenant, tant qu’à avoir un index, autant en profiter pour connaitre le nombre d’occurences liées. Ici toujours avec notre index de mots-clés, retrouvons le nombre d’articles (de 0 à tous) par une sous-boucle :

<B_mot_B><a name="Anchor-B">B</a><br>
 <BOUCLE_mots_B(MOTS){id_groupe=1}{titre==^[bB]} {par titre} {", "}>
    <a href=#URL_MOT>#TITRE</a>
<BOUCLE_nombre_article-b(ARTICLES) {id_mot}>
              </BOUCLE_nombre_articles-b>[(#TOTAL_BOUCLE)&nbsp;articles(s)]<//B_nombre_articles-b>
</BOUCLE_mots_B>

Voici maintenant la boucle complète avec — en prime — ce nombre d’articles liés à chaque mot-clé (cette boucle était utilisée ici ; depuis, ce site est passé en utf-8) :

<div align="center"><h2><b>&nbsp;
		       <a href="#Anchor-A">A</a>,
			 <a href="#Anchor-B">B</a>,
			  <a href="#Anchor-C">C</a>,
			   <a href="#Anchor-D">D</a>,
			    <a href="#Anchor-E">E</a>,
			     <a href="#Anchor-F">F</a>,
			      <a href="#Anchor-G">G</a>,
			       <a href="#Anchor-H">H</a>,
			        <a href="#Anchor-I">I</a>,
			         <a href="#Anchor-J">J</a>,
			          <a href="#Anchor-K">K</a>,
			           <a href="#Anchor-L">L</a>,
			            <a href="#Anchor-M">M</a>,
			             <a href="#Anchor-N">N</a>,	
			              <a href="#Anchor-O">O</a>,
		       	               <a href="#Anchor-P">P</a>,
			                <a href="#Anchor-Q">Q</a>,
			                 <a href="#Anchor-R">R</a>,
			                  <a href="#Anchor-S">S</a>,
			                   <a href="#Anchor-T">T</a>,
			                    <a href="#Anchor-U">U</a>,	       
			                     <a href="#Anchor-V">V</a>,
			                      <a href="#Anchor-W">W</a>,
			                       <a href="#Anchor-X">X</a>,
			                        <a href="#Anchor-Y">Y</a>,
			                         <a href="#Anchor-Z">Z</a>.<br>

					
					
					<br>
					<br>
				</b></h2>
		</div>
                <B_editeur_0><strong><a name="Anchor-0"></a></strong><br>
                        <BOUCLE_editeur_0(MOTS){id_groupe=1}{titre==^[0123456789]} {par titre} {"<br>"}>
                       		 &bull;&nbsp;<a href=#URL_MOT>#TITRE</a>
								<BOUCLE_nombre_ouvrages-0(ARTICLES) {id_mot}></BOUCLE_nombre_ouvrages-0>
								[(#TOTAL_BOUCLE)&nbsp;articles(s)]<//B_nombre_ouvrages-0></BOUCLE_editeur_0>

                <B_editeur_A><br><br><strong><a name="Anchor-A">A</a></strong><br>
                        <BOUCLE_editeur_A(MOTS){id_groupe=1}{titre==^[aAàÀáÁâÂäÄæÆãÃ]} {par titre} {"<br>"}>
                       		 &bull;&nbsp;<a href=#URL_MOT>#TITRE</a>
								<BOUCLE_nombre_ouvrages-a(ARTICLES) {id_mot}></BOUCLE_nombre_ouvrages-a>
								[(#TOTAL_BOUCLE)&nbsp;articles(s)]<//B_nombre_ouvrages-a></BOUCLE_editeur_A>

                <B_editeur_B><br><br><strong><a name="Anchor-B">B</a></strong><br>
                        <BOUCLE_editeur_B(MOTS){id_groupe=1}{titre==^[bB]} {par titre} {"<br>"}>
                       		 &bull;&nbsp;<a href=#URL_MOT>#TITRE</a>
								<BOUCLE_nombre_ouvrages-b(ARTICLES) {id_mot}></BOUCLE_nombre_ouvrages-b>
								[(#TOTAL_BOUCLE)&nbsp;articles(s)]<//B_nombre_ouvrages-b></BOUCLE_editeur_B>

                <B_editeur_C><br><br><strong><a name="Anchor-C">C</a></strong><br>
                        <BOUCLE_editeur_C(MOTS){id_groupe=1}{titre==^[cçCÇ]} {par titre} {"<br>"}>
                       		 &bull;&nbsp;<a href=#URL_MOT>#TITRE</a>
								<BOUCLE_nombre_ouvrages-c(ARTICLES) {id_mot}></BOUCLE_nombre_ouvrages-c>
								[(#TOTAL_BOUCLE)&nbsp;articles(s)]<//B_nombre_ouvrages-c></BOUCLE_editeur_C>

                <B_editeur_D><br><br><strong><a name="Anchor-D">D</a></strong><br>
                        <BOUCLE_editeur_D(MOTS){id_groupe=1}{titre==^[dD]} {par titre} {"<br>"}>
                       		 &bull;&nbsp;<a href=#URL_MOT>#TITRE</a>
								<BOUCLE_nombre_ouvrages-d(ARTICLES) {id_mot}></BOUCLE_nombre_ouvrages-d>
								[(#TOTAL_BOUCLE)&nbsp;articles(s)]<//B_nombre_ouvrages-d></BOUCLE_editeur_D>

                <B_editeur_E><br><br><strong><a name="Anchor-E">E</a></strong><br>
                        <BOUCLE_editeur_E(MOTS){id_groupe=1}{titre==^[eéèêëEÉÈÊË]} {par titre} {"<br>"}>
                       		 &bull;&nbsp;<a href=#URL_MOT>#TITRE</a>
								<BOUCLE_nombre_ouvrages-e(ARTICLES) {id_mot}></BOUCLE_nombre_ouvrages-e>
								[(#TOTAL_BOUCLE)&nbsp;articles(s)]<//B_nombre_ouvrages-e></BOUCLE_editeur_E>

                <B_editeur_F><br><br><strong><a name="Anchor-F">F</a></strong><br>
                        <BOUCLE_editeur_F(MOTS){id_groupe=1}{titre==^[fF]} {par titre} {"<br>"}>
                       		 &bull;&nbsp;<a href=#URL_MOT>#TITRE</a>
								<BOUCLE_nombre_ouvrages-f(ARTICLES) {id_mot}></BOUCLE_nombre_ouvrages-f>
								[(#TOTAL_BOUCLE)&nbsp;articles(s)]<//B_nombre_ouvrages-f></BOUCLE_editeur_F>

                <B_editeur_G><br><br><strong><a name="Anchor-G">G</a></strong><br>
                        <BOUCLE_editeur_G(MOTS){id_groupe=1}{titre==^[gG]} {par titre} {"<br>"}>
                       		 &bull;&nbsp;<a href=#URL_MOT>#TITRE</a>
								<BOUCLE_nombre_ouvrages-g(ARTICLES) {id_mot}></BOUCLE_nombre_ouvrages-g>
								[(#TOTAL_BOUCLE)&nbsp;articles(s)]<//B_nombre_ouvrages-g></BOUCLE_editeur_G>

                <B_editeur_H><br><br><strong><a name="Anchor-H">H</a></strong><br>
                        <BOUCLE_editeur_H(MOTS){id_groupe=1}{titre==^[hH]} {par titre} {"<br>"}>
                       		 &bull;&nbsp;<a href=#URL_MOT>#TITRE</a>
								<BOUCLE_nombre_ouvrages-h(ARTICLES) {id_mot}></BOUCLE_nombre_ouvrages-h>
								[(#TOTAL_BOUCLE)&nbsp;articles(s)]<//B_nombre_ouvrages-h></BOUCLE_editeur_H>

                <B_editeur_I><br><br><strong><a name="Anchor-I">I</a></strong><br>
                        <BOUCLE_editeur_I(MOTS){id_groupe=1}{titre==^[iîïIÎÏíÍìÌI]} {par titre} {"<br>"}>
                       		 &bull;&nbsp;<a href=#URL_MOT>#TITRE</a>
								<BOUCLE_nombre_ouvrages-i(ARTICLES) {id_mot}></BOUCLE_nombre_ouvrages-i>
								[(#TOTAL_BOUCLE)&nbsp;articles(s)]<//B_nombre_ouvrages-i></BOUCLE_editeur_I>
                </B_editeur_I>
                <B_editeur_J><br><br><strong><a name="Anchor-J">J</a></strong><br>
                        <BOUCLE_editeur_J(MOTS){id_groupe=1}{titre==^[jJ]} {par titre} {"<br>"}>
                       		 &bull;&nbsp;<a href=#URL_MOT>#TITRE</a>
								<BOUCLE_nombre_ouvrages-j(ARTICLES) {id_mot}></BOUCLE_nombre_ouvrages-j>
								[(#TOTAL_BOUCLE)&nbsp;articles(s)]<//B_nombre_ouvrages-j></BOUCLE_editeur_J>
                </B_editeur_J>
                <B_editeur_K><br><br><strong><a name="Anchor-K">K</a></strong><br>
                        <BOUCLE_editeur_K(MOTS){id_groupe=1}{titre==^[kK]} {par titre} {"<br>"}>
                       		 &bull;&nbsp;<a href=#URL_MOT>#TITRE</a>
								<BOUCLE_nombre_ouvrages-k(ARTICLES) {id_mot}></BOUCLE_nombre_ouvrages-k>
								[(#TOTAL_BOUCLE)&nbsp;articles(s)]<//B_nombre_ouvrages-k></BOUCLE_editeur_K>

                <B_editeur_L><br><br><strong><a name="Anchor-L">L</a></strong><br>
                        <BOUCLE_editeur_L(MOTS){id_groupe=1}{titre==^[lL]} {par titre} {"<br>"}>
                       		 &bull;&nbsp;<a href=#URL_MOT>#TITRE</a>
								<BOUCLE_nombre_ouvrages-l(ARTICLES) {id_mot}></BOUCLE_nombre_ouvrages-l>
								[(#TOTAL_BOUCLE)&nbsp;articles(s)]<//B_nombre_ouvrages-l></BOUCLE_editeur_L>

                <B_editeur_M><br><br><strong><a name="Anchor-M">M</a></strong><br>
                        <BOUCLE_editeur_M(MOTS){id_groupe=1}{titre==^[mM]} {par titre} {"<br>"}>
                       		 &bull;&nbsp;<a href=#URL_MOT>#TITRE</a>
								<BOUCLE_nombre_ouvrages-m(ARTICLES) {id_mot}></BOUCLE_nombre_ouvrages-m>
								[(#TOTAL_BOUCLE)&nbsp;articles(s)]<//B_nombre_ouvrages-m></BOUCLE_editeur_M>

                <B_editeur_N><br><br><strong><a name="Anchor-N">N</a></strong><br>
                        <BOUCLE_editeur_N(MOTS){id_groupe=1}{titre==^[nñNÑ]} {par titre} {"<br>"}>
                       		 &bull;&nbsp;<a href=#URL_MOT>#TITRE</a>
								<BOUCLE_nombre_ouvrages-n(ARTICLES) {id_mot}></BOUCLE_nombre_ouvrages-n>
								[(#TOTAL_BOUCLE)&nbsp;articles(s)]<//B_nombre_ouvrages-n></BOUCLE_editeur_N>

                <B_editeur_O><br><br><strong><a name="Anchor-O">O</a></strong><br>
                        <BOUCLE_editeur_O(MOTS){id_groupe=1}{titre==^[oõôöœòÒóÓOÕÔÖŒ]} {par titre} {"<br>"}>
                       		 &bull;&nbsp;<a href=#URL_MOT>#TITRE</a>
								<BOUCLE_nombre_ouvrages-o(ARTICLES) {id_mot}></BOUCLE_nombre_ouvrages-o>
								[(#TOTAL_BOUCLE)&nbsp;articles(s)]<//B_nombre_ouvrages-o></BOUCLE_editeur_O>

                <B_editeur_P><br><br><strong><a name="Anchor-P">P</a></strong><br>
                        <BOUCLE_editeur_P(MOTS){id_groupe=1}{titre==^[pP]} {par titre} {"<br>"}>
                       		 &bull;&nbsp;<a href=#URL_MOT>#TITRE</a>
								<BOUCLE_nombre_ouvrages-p(ARTICLES) {id_mot}></BOUCLE_nombre_ouvrages-p>
								[(#TOTAL_BOUCLE)&nbsp;articles(s)]<//B_nombre_ouvrages-p></BOUCLE_editeur_P>

                <B_editeur_Q><br><br><strong><a name="Anchor-Q">Q</a></strong><br>
                        <BOUCLE_editeur_Q(MOTS){id_groupe=1}{titre==^[qQ]} {par titre} {"<br>"}>
                       		 &bull;&nbsp;<a href=#URL_MOT>#TITRE</a>
								<BOUCLE_nombre_ouvrages-q(ARTICLES) {id_mot}></BOUCLE_nombre_ouvrages-q>
								[(#TOTAL_BOUCLE)&nbsp;articles(s)]<//B_nombre_ouvrages-q></BOUCLE_editeur_Q>

                <B_editeur_R><br><br><strong><a name="Anchor-R">R</a></strong><br>
                        <BOUCLE_editeur_R(MOTS){id_groupe=1}{titre==^[rR]} {par titre} {"<br>"}>
                       		 &bull;&nbsp;<a href=#URL_MOT>#TITRE</a>
								<BOUCLE_nombre_ouvrages-r(ARTICLES) {id_mot}></BOUCLE_nombre_ouvrages-r>
								[(#TOTAL_BOUCLE)&nbsp;articles(s)]<//B_nombre_ouvrages-r></BOUCLE_editeur_R>

                <B_editeur_S><br><br><strong><a name="Anchor-S">S</a></strong><br>
                        <BOUCLE_editeur_S(MOTS){id_groupe=1}{titre==^[sS]} {par titre} {"<br>"}>
                       		 &bull;&nbsp;<a href=#URL_MOT>#TITRE</a>
								<BOUCLE_nombre_ouvrages-s(ARTICLES) {id_mot}></BOUCLE_nombre_ouvrages-s>
								[(#TOTAL_BOUCLE)&nbsp;articles(s)]<//B_nombre_ouvrages-s></BOUCLE_editeur_S>

                <B_editeur_T><br><br><strong><a name="Anchor-T">T</a></strong><br>
                        <BOUCLE_editeur_T(MOTS){id_groupe=1}{titre==^[tT]} {par titre} {"<br>"}>
                       		 &bull;&nbsp;<a href=#URL_MOT>#TITRE</a>
								<BOUCLE_nombre_ouvrages-t(ARTICLES) {id_mot}></BOUCLE_nombre_ouvrages-t>
								[(#TOTAL_BOUCLE)&nbsp;articles(s)]<//B_nombre_ouvrages-t></BOUCLE_editeur_T>

                <B_editeur_U><br><br><strong><a name="Anchor-U">U</a></strong><br>
                        <BOUCLE_editeur_U(MOTS){id_groupe=1}{titre==^[uûüUÛÜùÙúÚ]} {par titre} {"<br>"}>
                       		 &bull;&nbsp;<a href=#URL_MOT>#TITRE</a>
								<BOUCLE_nombre_ouvrages-u(ARTICLES) {id_mot}></BOUCLE_nombre_ouvrages-u>
								[(#TOTAL_BOUCLE)&nbsp;articles(s)]<//B_nombre_ouvrages-u></BOUCLE_editeur_U>

                <B_editeur_V><br><br><strong><a name="Anchor-V">V</a></strong><br>
                        <BOUCLE_editeur_V(MOTS){id_groupe=1}{titre==^[vV]} {par titre} {"<br>"}>
                       		 &bull;&nbsp;<a href=#URL_MOT>#TITRE</a>
								<BOUCLE_nombre_ouvrages-v(ARTICLES) {id_mot}></BOUCLE_nombre_ouvrages-v>
								[(#TOTAL_BOUCLE)&nbsp;articles(s)]<//B_nombre_ouvrages-v></BOUCLE_editeur_V>

                <B_editeur_W><br><br><strong><a name="Anchor-W">W</a></strong><br>
                        <BOUCLE_editeur_W(MOTS){id_groupe=1}{titre==^[wW]} {par titre} {"<br>"}>
                       		 &bull;&nbsp;<a href=#URL_MOT>#TITRE</a>
								<BOUCLE_nombre_ouvrages-w(ARTICLES) {id_mot}></BOUCLE_nombre_ouvrages-w>
								[(#TOTAL_BOUCLE)&nbsp;articles(s)]<//B_nombre_ouvrages-w></BOUCLE_editeur_W>

                <B_editeur_X><br><br><strong><a name="Anchor-X">X</a></strong><br>
                        <BOUCLE_editeur_X(MOTS){id_groupe=1}{titre==^[xX]} {par titre} {"<br>"}>
                       		 &bull;&nbsp;<a href=#URL_MOT>#TITRE</a>
								<BOUCLE_nombre_ouvrages-x(ARTICLES) {id_mot}></BOUCLE_nombre_ouvrages-x>
								[(#TOTAL_BOUCLE)&nbsp;articles(s)]<//B_nombre_ouvrages-x></BOUCLE_editeur_X>

                                <B_editeur_Y><br><br><strong><a name="Anchor-Y">Y</a></strong><br>
                        <BOUCLE_editeur_Y(MOTS){id_groupe=1}{titre==^[yÿYŸý]} {par titre} {"<br>"}>
                       		 &bull;&nbsp;<a href=#URL_MOT>#TITRE</a>
								<BOUCLE_nombre_ouvrages-y(ARTICLES) {id_mot}></BOUCLE_nombre_ouvrages-y>
								[(#TOTAL_BOUCLE)&nbsp;articles(s)]<//B_nombre_ouvrages-y></BOUCLE_editeur_Y>

                <B_editeur_Z><br><br><strong><a name="Anchor-Z">Z</a></strong><br>
                        <BOUCLE_editeur_Z(MOTS){id_groupe=1}{titre==^[zZ]} {par titre} {"<br>"}>
                       		 &bull;&nbsp;<a href=#URL_MOT>#TITRE</a>
								<BOUCLE_nombre_ouvrages-z(ARTICLES) {id_mot}></BOUCLE_nombre_ouvrages-z>
								[(#TOTAL_BOUCLE)&nbsp;articles(s)]<//B_nombre_ouvrages-z></BOUCLE_editeur_Z>

Footnotes

[1Cette page possède un « article alibi » (ou une « brève alibi » si l’on préfère) qui n’est pas appelé mais qui valide tout de même l’affichage public de cette rubrique.

Attention, si votre site est en utf-8, les lettres accentuées vont se placer entre le aA et le bB (sauf œ, Œ et “Y tréma” qui se placent à la suite de l’alphabet). Les majuscules puis les minuscules. Il n’est donc pas recommandé d’utiliser cette boucle sur ce paramètre sauf à supprimer les signes diacritiques en initiale. Celà ne présage pas d’autres surprises pontuelles pour les 2e-3e... lettres suivantes aussi utilisées pour le tri.

updated on 2 October 2019

Discussion

2 discussions

  • 3

    À partir de Spip 1.8, on n’est plus obligée de créer une boucle par lettre. Voir la variante: http://www.spip-contrib.net/spikini....

    On y perd juste le décompte des mots par lettre qui ne me paraît pas indispensable.

    • Je vais regarder un peu mieux ta variante.

      En attendant tu peux regarder le début de discussion pour une autre variante ici :

      http://www.spip-contrib.net/ecrire/?exec=articles&id_article=1222

      (il suffit de s’inscrire)

      Je devais m’y remettre cet été.

      Claude

    • Pour un nouveau site, je me suis penchée sur la question du jeu de caractères UTF-8 et c’est effectivement un véritable casse-tête.

      Il n’empêche que la nouvelle contrib que tu proposes, certes astucieuse, me paraît toujours très complexe. Créer 26 brèves pour obtenir un classement alphabétique, c’est ce qu’on appelle “utiliser un canon pour tuer une mouche”.

      J’ai ajouté sous la variante que j’avais proposée sur le wiki, une nouvelle solution, qui fonctionne sur mon site en UTF-8, MAIS qui utilise du php. Ben oui... parfois, il est bon de s’y frotter un peu.

      Je suis très intéressée à ce que tu la testes, parce que tu as l’air d’avoir un beau grand glossaire bien complexe.

      Aurélie

    • bonsoir,

      Créer 26 brèves pour obtenir un classement alphabétique, c’est ce qu’on appelle « utiliser un canon pour tuer une mouche ».

      vrai mais comme c’est pour gérer *plusieurs* index, la série de brèves est mutualisée une fois pour toutes.

      Je suis très intéressée à ce que tu la testes, parce que tu as l’air d’avoir un beau grand glossaire bien complexe.

      Dès que j’ai un peu de temps à moi (quelques jours a priori).

      claude

    Reply to this message

  • 2

    Je débute en SPIP et j’aurais besoin pour mon site de réaliser un index dans mes sous rubriques... Sachant que je dispose de de la version 1.7.2 a quel endroit faudrait-il que je place cette boucle ?

    • C’est pareil. Tu copies(-modifies) le code dans la page article_XX.html que tu crées (ou que tu modifies s’il elle existe déjà).

      Si ta sous-rubrique est vide, tu saisies un article ou tu ajoutes un site que tu n’afficheras pas ; ou tu rajoutes des sous-sous-rubriques.

      Après, l’information que tu donnes est succincte donc la réponse ne te correspond pas forcément.

      Claude

    • J’ai réussi, merci beaucoup ! C’est super comme boucle ! Le problème que j’avais venait du fait que je ne savais pas qu’il fallait modifier le code pour l’adapter aux “articles” plutôt qu’aux “mots”.
      J’ai donc remplacé “MOTS” par “ARTICLES” et “id_groupe=1” par “id_rubrique” et ça marche...
      Encore merci

    Reply to this message

Comment on this article

Who are you?
  • [Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom