Ottenere un feed RSS è cosa più o meno gratuita da tantissimi CMS, così come anche dal simpatico Dblog, che uso ormai da 9 anni per la gestione del mio blog personale.
Il mio blog è però pieno di articoli della natura più svariata e mi aiuto proprio con la suddivisione in sezioni per tenerli distinti, sia per le mie ricerche personali che per i visitatori del mio portale.
Purtroppo il feed RSS spara fuori tutto, senza dare la possibilità di filtrare alcune sezioni, cioè vengono mescolati, nel mio caso, articoli di giri in mountain bike con materiale di divulgazione scientifica o informatica.
Mi sono pertanto preso la briga di scrivere un piccolo filtro a partire dal file in ASP feedrss.asp, dando la possibilità di filtrare per sezioni, cioè di ottenere la lista degli articoli per un sottoinsieme di sezioni specificato attraverso la Request:
filteredfeedrss.asp?sections=[sezioni]
Dove il vostro sezioni dovrà contenere una o più sezioni opportunamente concatenate con la virgola, anch'essa codificata (%2C) per la Request:
[sezioni] = sezione1%2Csezione2%2Csezione3
Questo presuppone che non abbiate usato il carattere virgola proprio dentro alle denominazioni delle sezioni, altrimenti dovrete pensare a qualche altro carattere di separazione. Se pertanto volete pescare tutti gli articoli riguardanti il web e Windows dal mio blog l'http GET da effettuare è la seguente:
http://www.tencas.com/blog/filteredfeedrss.asp?sections=web%2CWindows
Se invece non specificate alcun parametro, esso risponderà con tutte le sezioni:
http://www.tencas.com/blog/filteredfeedrss.asp
Si potrebbe proseguire a svilupparlo, gestendo anche un meccanismo di esclusione di alcune sezioni, in modo da evitare che eventuali nuove sezioni rimangano tagliate fuori, ma ci penserò più avanti.
Questo il sorgente modificato:
Dim SectionWherePart
Dim SectionsRequest
Dim sectionKeys
Dim sectionKeysCount
WherePart = "(Articoli.Data <= '" & DataToStr(Date()) &
"') AND (NOT Articoli.Bozza)"
If (Request("sections") <> "") Then
SectionsRequest = ControlloSQLInjection(Request("sections"))
sectionKeys = Split(SectionsRequest,",")
For Each sectionKey in sectionKeys
If (sectionKeysCount > 0) Then
SectionWherePart = SectionWherePart & " OR "
End If
SectionWherePart = SectionWherePart & "([Sezione] = '" &
sectionKey & "')"
sectionKeysCount = sectionKeysCount + 1
Next
WherePart = WherePart & " AND (" & SectionWherePart & ")"
End If
SQLArticoli = " SELECT TOP "& Num_Max_Articoli &
" [ID], [Autore], [Sezione], [Titolo], [Testo], "
"[Data], [Ora] FROM Articoli WHERE " & WherePart &
" ORDER BY Articoli.Data DESC, Articoli.Ora DESC "
Se volete scaricare tutto il file, lo potete trovare qua. Potete metterlo tranquillamente nella radice di dblog, affiancato al tradizionale file feedrss.asp.