Generare feed RSS

A volte capita di dover generare pagine contenenti tutti i feed rss che possono essere estratti da un determinato vocabolario, per fare questo esiste un modulo apposito, si chiama syndication, che però ha dei limiti, innanzitutto non indenta correttamente i vari feed delle voci gerarchizzate, non inserisce l'icona del feed affianco alle rispettive voci, non genera i feed di termini che non hanno contenuti, .... Tutto questo potrebbe essere sistemato agendo sul codice del modulo (lo farò e invierò la patch), ma è altrettanto possibile farlo senza utilizzare alcun modulo ma generando una semplice pagina con codice PHP. Vediamo come proseguire in questa direzione.

Prima di tutto creiamo una nuova pagina e scegliamo, per questo contenuto, come formato di input PHP Code. Ora all'interno della pagina andiamo ad inserire il seguente codice:<?php
$vid = 4;
$main = taxonomy_get_tree($vid, 0, 0, 2);
$items = array();
$image = '<img src="/misc/feed.png" alt="icona del feed RSS" width="16" height="16" />';
foreach( $main as $i => $item) {
$tid = $main[$i]->tid;
$main2 = taxonomy_get_children($tid);
// print_r($main2);
$items2 = array();
foreach( $main2 as $j => $item) {
$items2[$j] = l( $image . '' . $main2[$j]->name . '', 'taxonomy/term/'. $main2[$j]->tid . '/0/feed', array(), NULL, NULL, FALSE, TRUE);
$items2[$j] .= '' . $main2[$j]->description . '';
}
$items[$i] = l($image . '' . $main[$i]->name . '', 'taxonomy/term/'. $main[$i]->tid . '/0/feed', array(), NULL, NULL, FALSE, TRUE);
$items[$i] .= '' . $main[$i]->description . '';
$items[$i] .= theme('item_list', $items2);
unset($items2);
}
print theme('item_list', $items, NULL, 'ul', array('class' => 'feedlist'));
?>

Andiamo ora a "configurare" questo piccolo script, andando a mettere, come prima cosa il numero del vocabolario di cui vogliamo andare a generare l'albero dei feed alla variabile $vid, ed impostiamo all'interno della variabile $image il codice HTML che vogliamo andare ad utilizzare come immagine del feed da inserire. Per ora ho utilizzato semplicemente l'immagine dei feed standard che si trova all'interno dell'installazione di Drupal, ma ciò non toglie che potete personalizzarla scegliendone di altre o rimuovendola.

A questo punto vi troverete con l'albero dei feed associati ai vari termini del vostro vocabolario gerarchizzato nella pagina che avete indicato; per ogni termine, se avete associato ad essi una descrizione, questa sarà visualizzata nella pagina subito dopo l'immagine e il nome del feed.

Un esempio del risultato ottenibile è il seguente:

NB: i feed elencati qui sopra non esistono!

Ovviamente possiamo poi intervenire sui CSS per modificare lo stile in cui questo vien presentato.

Note

Attualmente questo script prevede una conoscenza minima del codice PHP per poter essere configurato e utilizzato, genera solamente l'elenco dei termini e sei sottotermini, ma è facilmente espandibile al numero di livelli che si vuole ottenere. Successivamente verrà perfezionato per avere una maggiore stabilità ed espandibilità.

Reply

The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <table> <td> <tr> <img> <h2> <h3>
  • Lines and paragraphs break automatically.

More information about formatting options