Visto che preparando il blog ho deciso di utilizzare sia i tags che le categorie, così come indicato in questo post, mi sono posto il problema di come rendere fruibili i contenuti, agevolando la navigazione fra i termini di entrambi i vocabolari.
Per i tags la vita viene facilitata dal modulo Tagadelic, ma per il mio secondo vocabolario non sono riuscito a trovare nulla che soddisfacesse le mie esigenze.
Mi interessava un blocco in perfetto blog-style, con il conteggio dei post per categoria e il link al feed rss, ma dopo un paio di giorni di ricerche vane fra i moduli per Drupal sono giunto a concludere che era meglio arrangiarsi da soli.
Naturalmente per uno che con il php ci fa più che altro a pugni la cosa è tutt'altro che semplice.
I risultati però arrivano a volte anche per i praticoni e nel mio caso si possono ammirare in tutto lo splendore del blocco Canali. Riporto di seguito i passaggi necessari a replicarlo, sperando che possa venir utile a qualcuno e/o che qualche lettore esperto di php mi possa dare suggerimenti su come migliorarlo.
Riferimenti
Per realizzare il blocco ho fatto riferimento alle seguenti risorse:
- il modulo Taxonomy dhtml, in particolare la funzione function taxonomy_dhtml_block;
- lo script per generare un riassunto dei feeds rss proposto da Mavimo.
Mi sono limitato a prelevare le parti di codice che mi interessavano e ad apportare alcune piccolissime modifiche.
Ma passiamo alla fase operativa: entriamo nelle funzioni di amministrazione del nostro sito e aggiungiamo un nuovo blocco con /admin/build/block/add; spuntiamo Php code come formato di input e copiamo nel corpo del blocco il codice riportato di seguito:
<?
$vid = 2;
$tree = taxonomy_get_tree($vid, 0, 0, 2);
$image = '<img src="/misc/feed.png" alt="icona del feed RSS" align="right" />';
foreach ($tree as $term) {
$url = "taxonomy/term/$term->tid";
$url2 = "taxonomy/term/$term->tid/0/feed";
$feed = l(t($image), $url2, array(), NULL, NULL, FALSE, TRUE);
$link = l(t($term->name), $url, array("title" => t($term->description)));
$out .= "<ul><li>$feed $link";
$count = taxonomy_term_count_nodes($term->tid);
if ($count) {
$out .= " ($count)";
}
$out .= "</li></ul>";
}
return $out;
?>Ora, per prima cosa un paio di annotazioni: la variabile $vid richiama il numero identificativo del vocabolario che portiamo alla visualizzazione nel blocco e va pertanto modificata verificando la numerazione del vocabolario che ci interessa richiamare. La variabile $image visualizza invece l'icona del feed presente di default nella directory misc di Drupal: se vogliamo ne possiamo caricare un'altra e modificare l'url riportato nel nostro codice.
Fatte le mofiche opportune salviamo il nostro blocco e lo portiamo in visualizzazione. Adesso abbiamo un bell'elenco con i links alle pagine delle categorie, un contatore di post per ogni termine e i links ai feeds rss.
Naturalmente possiamo anche controllare la formattazione del nostro blocco utilizzando i Css. Apriamo il nostro file style.css e inseriamo il seguente codice:
#block-block-3 li {
background: url(images/folder.png) no-repeat left top;
padding-left: 22px;
}Anche qui due annotazioni: dobbiamo verificare il numero identificativo del blocco che abbiamo creato e richiamarlo nel nostro foglio di stile (nel codice proposto sopra è il blocco 3, da modificare con l'identificativo interessato); nella cartella images del nostro tema dobbiamo caricare l'icona che che viene visualizzata nel blocco (in questo caso folder.png).
Canali: Web for donkeys



















Mer, 02/13/2008 - 19:27
Avevo pensato a views, ma avrei finito per installarlo solo per questo blocco, perchè per il resto (immagini a parte) faccio un uso piuttosto leggero di drupal.
Grazie per il commento e per il supporto, s'intende ;)
***io non centro***
Mer, 02/13/2008 - 18:13
Interessante guida, io non ci sarei mai arrivato, ho sempre usato un blocco fatto con le Views :)
Grazie per avermi citato nei credits, sempre a disposizione! ;)
Invia nuovo commento