Come inserire nel feed il numero di commenti ad un post

Troppo spesso noto una certa tendenza al limitarsi ad usare i feed nella modalità più semplice che esista: quella predefinita.
Così facendo, la maggior parte degli utenti non si rende conto di quanto potrebbe aumentare l'interazione con i propri utenti semplicemente con qualche accorgimento.

In questo post vorrei documentare una modifica tanto banale quanto interessante. Vedremo quindi come è possibile estendere il proprio feed inserendo tra le informazioni il numero dei commenti pubblicati per ogni post.

Il risultato: come gli aggregatori mostrano il numero di commenti

Questa volta vorrei fare uno strappo alla regola e partire dal risultato delle nostre modifiche. Ecco quindi uno screenshot di quello che otterremo: il numero di commenti per ogni post.

Slash module on FeedDemon

E' importante sottolineare che ogni aggregatore è libero di utilizzare questa informazione come meglio preferisce.
Lo screenshot precedente, nello specifico, fa riferimento a FeedDemon mentre in seguito riporto la stessa informazione gestita da RSS Bandit.

Slash module on RSS Bandit

Modulo XML Slash: mostrare il numero di commenti ad un post

Se vi state chiedendo quanto complicato possa essere ottenere quanto appena mostrato non disperate! E' molto semplice.
Per il nostro scopo ci serviremo del modulo XML Slash per estendere il nostro feed.

Slash è un modulo per RSS 1.0 creato nel 2000 dagli ideatori del famoso sito Slashdot ed in seguito rilasciato con licenza GNU General Public License.
Questo modulo offre molto di più di quanto necessario al nostro scopo, dunque ci limiteremo a prendere in prestito il tag <comments>.

Estendere il feed RSS o Atom base

Nelle righe seguenti vedremo come estendere il nostro feed integrando il modulo Slash grazie all'uso dei namespace XML.
Anche se siete a digiuno di XML, namespace e diavolerie varie non vi preoccupate, le indicazioni seguenti dovrebbero comunque consentirvi di eseguire le modifiche in tranquillità.

Per estendere un file XML con un modulo non standard è necessario dichiararne il namespace nel tag di apertura del documento.
Nel caso di un feed RSS 2.0 identificate la riga <rss version="2.0"> mentre per un file Atom 1.0 cercate <feed xmlns="http://www.w3.org/TR/REC-xml-names/">.
In entrambi i casi la stringa dovrebbe trovarsi nella seconda riga del file, subito dopo alla dichiarazione del file XML, ovvero una stringa tipo <?xml version="1.0" encoding="utf-8"?>.

A questo punto, inserite la dichiarazione del namespace che nel nostro caso è xmlns:slash="http://purl.org/rss/1.0/modules/slash/".
La definizione di un namespace è caratterizzata dalla stringa xmlns: seguita dal nome del prefisso che identifica il namespace e dall'URI identificativo.
Se siete stati attenti noterete che la versione base del formato Atom 1.0 contiene a sua volta un namespace predefinito, con URI http://www.w3.org/TR/REC-xml-names/.

Il risultato sarà, per un feed RSS 2.0

<?xml version="1.0"?>
<rss version="2.0"
  xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
>

mentre per un feed Atom 1.0

<feed
xmlns="http://www.w3.org/TR/REC-xml-names/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
>

Ora che abbiamo dichiarato il modulo Slash possiamo utilizzarlo all'interno del nostro feed.
Tutto quello che ci serve di questo modulo è esclusivamente il tag <slash:comments>NUMERO_COMMENTI</slash:comments> che, una volta inserito all'interno del nodo che identifica il post, indica il numero di commenti per quell'elemento.
Il numero dei commenti è un valore intero positivo che andrà inserito al posto di NUMERO_COMMENTI.

Torniamo all'esempio del nostro file RSS 2.0. In questo caso il tag andrà inserito all'interno dei tag <item></item> che delimitano il contenuto di un post.
Guardate l'esempio seguente, basato sul feed del mio blog.

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>Simone Carletti's Blog</title>
<link>http://www.simonecarletti.com/blog/</link>
<description>Un piccolo spazio nel web dedicato al web con approfondimenti su marketing, feed RSS / Atom e motori di ricerca.</description>
<language>en</language>
<lastBuildDate>Thu, 17 May 2007 10:19:31 -0500</lastBuildDate>
<generator>Movable Type 3.34 http://www.sixapart.com/movabletype/</generator>
<item>
<title>Quanto è sicuro salvare le password nel browser?</title>
<link>http://feeds.feedburner.com/~r/simonecarletti/~3/117447717/salvataggio-password-browser.php</link>
<description>Quanto è sicuro salvare le password nel browser? A confronto Internet Explorer, Firefox ed Opera.</description>
<slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments>
</item>
<item>
<title>I file PST di Outlook non supportano il salvataggio in cartelle di rete</title>
<link>http://feeds.feedburner.com/~r/simonecarletti/~3/117255256/pst-outlook-supporto-rete-lan.php</link>
<description>Se state pensando di salvare il file .pst in una cartella condivisa per ottimizzare tempi e risorse... non fatelo!</description>
<slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments>
</item>
</channel>
</rss>

Per quanto riguarda i feed Atom 1.0 poco cambia, ad esclusione del fatto che in questo caso il nome del tag che identifica i post si chiama <entry>.

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
<title>Simone Carletti&apos;s Blog</title>
<id>tag:www.simonecarletti.com,2007:/blog//1</id>
<link rel="alternate" type="text/html" href="http://www.simonecarletti.com/blog/"/>
<link rel="service.post" type="application/atom+xml" href="http://www.simonecarletti.com/mt/mt-atom.cgi/weblog/blog_id=1" title="Simone Carletti&apos;s Blog"/>
<updated>2007-05-17T15:19:31Z</updated>
<subtitle>Un piccolo spazio nel web dedicato al web con approfondimenti su marketing, feed RSS / Atom e motori di ricerca.</subtitle>
<generator uri="http://www.sixapart.com/movabletype/">Movable Type 3.34</generator>
<link rel="self" href="http://feeds.feedburner.com/simonecarletti" type="application/atom+xml"/>
<entry>
<title>Quanto è sicuro salvare le password nel browser?</title>
<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/simonecarletti/~3/117447717/salvataggio-password-browser.php"/>
<link rel="service.edit" type="application/atom+xml" href="http://www.simonecarletti.com/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=629" title="Quanto è sicuro salvare le password nel browser?"/>
<id>tag:www.simonecarletti.com,2007:/blog//1.629</id>
<published>2007-05-17T15:16:53Z</published>
<updated>2007-05-17T15:19:31Z</updated>
<author>
<name>Simone Carletti</name>
<uri>http://www.simonecarletti.com/</uri>
</author>
<slash:comments>0</slash:comments>
<content type="html">Quanto è sicuro salvare le password nel browser? A confronto Internet Explorer, Firefox ed Opera.</content>
</entry>
<entry>
<title>I file PST di Outlook non supportano il salvataggio in cartelle di rete</title>
<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/simonecarletti/~3/117255256/pst-outlook-supporto-rete-lan.php"/>
<link rel="service.edit" type="application/atom+xml" href="http://www.simonecarletti.com/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=628" title="I file PST di Outlook non supportano il salvataggio in cartelle di rete"/>
<id>tag:www.simonecarletti.com,2007:/blog//1.628</id>
<published>2007-05-16T22:05:01Z</published>
<updated>2007-05-16T22:09:01Z</updated>
<author>
<name>Simone Carletti</name>
<uri>http://www.simonecarletti.com/</uri>
</author>
<slash:comments>0</slash:comments>
<content type="html">Se state pensando di salvare il file .pst in una cartella condivisa per ottimizzare tempi e risorse... non fatelo!</content>
</entry>
</feed>

Semplice vero?

Ma chi e cosa deve inserire questo tag?

A questo punto senz'altro qualcuno di voi si starà chiedendo chi o cosa deva inserire questo tag ed il suo valore.
Anche la risposta è molto semplice e trova soluzione nel sistema che utilizzate per generare il feed.

Se vi rivolgete ad una piattaforma come WordPress o MovableType allora dovrete modificare il sistema di publishing in modo tale che inserisca automaticamente questo dato.

Se scrivete il feed a mano o con un linguaggio di programmazione, allora dovrete modificare le vostre abitudini o il vostro codice in modo tale da includere questo nuovo elemento.

In conclusione

Inserire il numero di commenti in un feed non è un'operazione così complessa e si tratta, tutto sommato, di un'informazione utile soprattutto per i feed pubblicati da blog molto attivi.
L'obiettivo può essere raggiunto semplicemente estendendo così il feed con il modulo Slash come sopra indicato.