Il mio modo di intendere la tassonomia
Salve a tutti è la mia prima discussione su Drupal. Sto sviluppando un nuovo sito e ho deciso di provare Drupal. Ho una buona conoscenza di PHP, HTML e CSS ma desidero "sfruttare" il buon lavoro svolto su Drupal, e contribuire io stesso al suo sviluppo o quantomeno alla community, piuttosto che implementare tutto da capo con le mie sole forze. Ecco cosa intendo fare: il mio sito è diviso in aree tematiche. Scegliendo un'area www.miosito.it/gelati (sfrutto la riscrittura degli URL associati agli elementi della tasosnomia) vengono visualizzate solo le storie della categoria gelati. Fin qui tutto facile. Quello che ho provato a fare è creare una tassonomia gerarchica a più livelli e collegarla alle aree tematiche. Esempio: Dolci -dessert -torte -gelati --alla frutta --al cioccolato -sorbetti Bevande -analcoliche -alcoliche Creare la gerarchia è semplice ma se inserisco delle storie, ad esempio, in "alla frutta" e "al cioccolato" e clicco sulla categoria "gelati" Drupal mi dice che la categoria è vuota. Io invece voglio far vedere, per ogni categoria, le storie di quella categoria e quelle delle categorie figlie. Quando ho provato Wordpress, ho riscontrato lo stesso problema, quindi più che un problema a questo punto è più un modo di vedere le cose. Secondo me il comportamneto "naturale" è quello di far vedere anche i contenuti dei figli. So che associando categorie multiple ad una storia posso ottenere qualcosa di simile ma l'associazione dev'essere fatta manualmente per ogni storia. Come posso risolvere questo problema automaticamente? Grazie in anticipo.
Risposte
Salve a tutti
Scusate, sarà stata colpa del rich text abbianto a Safari (il sistema mi aveva avvertito di una possibile incomplatibilità, quindi è colpa mia)
Questa dovrebbe essere la versione giusta:
Salve a tutti
è la mia prima discussione su Drupal.
Sto sviluppando un nuovo sito e ho deciso di provare Drupal. Ho una buona conoscenza di PHP, HTML e CSS ma desidero 'sfruttare' il buon lavoro svolto su Drupal, e contribuire io stesso al suo sviluppo o quantomeno alla community, piuttosto che implementare tutto da capo con le mie sole forze.
Ecco cosa intendo fare: il mio sito è diviso in aree tematiche. Scegliendo un'area www.miosito.it/gelati (sfrutto la riscrittura degli URL associati agli elementi della tasosnomia) vengono visualizzate solo le storie della categoria gelati. Fin qui tutto facile.
Quello che ho provato a fare è creare una tassonomia gerarchica a più livelli e collegarla alle aree tematiche.
Esempio:
Dolci
-dessert
-torte
-gelati
--alla frutta
--al cioccolato
-sorbetti
Bevande
-analcoliche
-alcoliche
Creare la gerarchia è semplice ma se inserisco delle storie, ad esempio, in alla frutta e al cioccolato e clicco sulla categoria gelati Drupal mi dice che la categoria è vuota.
Io invece voglio far vedere, per ogni categoria, le storie di quella categoria e quelle delle categorie figlie.
Quando ho provato Wordpress, ho riscontrato lo stesso problema, quindi più che un problema a questo punto è più un modo di vedere le cose.
Secondo me il comportamneto naturale è quello di far vedere anche i contenuti dei figli.
So che associando categorie multiple ad una storia posso ottenere qualcosa di simile ma l'associazione dev'essere fatta manualmente per ogni storia.
Come posso risolvere questo problema automaticamente?
Grazie in anticipo.
Ciao questo è un problema
Ciao
questo è un problema che è stato segnalato anche da altri utenti Drupal... penso che prima o poi si aggiungerà nel core la possibilità di far vedere anche i nodi dei figli oppure di nasconderli (com'è ora).
Molti hanno ovviato al problema utilizzando uno dei moduli aggiuntivi per la gestione e la visualizzazione delle tassonomie (li trovi nella pagina Moduli della sezione Download con nomi del tipo Taxonomy....).
Una maniera veloce per ovviare il problema è quello di creare un alias tramite il modulo alias presente nel core dicendo ad esempio che Dolci corrisponde a taxonomy/term/1+2+3 (sono gli id delle tassonomie).
Su come usare gli id delle tassonomie trovi un sacco di post su drupal.org.
Naturalmente facci sapere se trovi altre soluzioni migliori.
Grazie del consiglio, in
Grazie del consiglio, in effetti la tassonomia è davvero potente, tuttavia questo metodo non mi permette di cambiar gli alias come desidero
infatti io vorrei digitare miosito.it/dolci/gelati e vedere le storie relative a tutti i tipi di gelato (categorie figlie di gelati). Il tuo metodo mi permette di raggruppare le categorie ma non di modificare ulteriormente gli alias (diciamo ricorsivamente), come nell'esempio.
dolci/gelati -> taxonomy/term/12+13
taxonomy/term/12+13 -> taxonomy/term/8
ho pensato che l'ordine degli alias potesse aiutermi ma non è possibile riordinare gli alias che anzi vengono riordinati in ordine alfabetico dal sistema.
Cmq, queste informazioni ed altre che sto leggendo nella documentazione mi fanno capire quanto potente e personalizzabile è Drupal. Vi terrò aggiornati delle mie ulteriori prove.
Ho trovato una
Ho trovato una soluzione.
Premessa: Utilizzando il modulo pathauto vengono creati automaticamente gli alias alle categorie.
Oltre agli alias generati manualmente o con pathauto bisogna aggiungere altri alias (uno per ogni categoria che a sua volta ha sottocategorie)
Esempio:
Alias delle categorie generati da pathauto
Alias - System
gelati - taxonomy/term/1
gelati/alla_frutta - taxonomy/term/3
gelati/al_cioccolato - taxonomy/term/2
Alias da aggiungere
1) gelati - taxonomy/term/1+2+3
2) taxonomy/term/1+2+3 - taxonomy/term/1
Il secondo obbliga il sistema a mostrare i nodi delle sottocategorie di "gelati" insieme ai nodi di "gelati".
Il primo trasforma l'URL come piace a noi.
Problema: gli alias 1) e 2) non possono essere sfruttati contemporaneamente. Drupal ne utilizza solo uno.
Soluzione: bisogna modificare la funzione "drupal_get_path_alias" all'interno del file "bootstrap.inc" in modo da risolvere gli alias in maniera ricorsiva. Ovvero si risolve il primo alias, si vede se il risultato appartiene ancora alla tabella degli alias, in caso positivo si risolve il nuovo alias e così via.
In questo modo il sistema è in grado di trasformare alias come questo:
taxonomy/term/1 --> taxonomy/term/1+2+3 --> news
La funzione modificata è la seguente:
function drupal_get_path_alias($path) {
if (($map = drupal_get_path_map()) && ($newpath = array_search($path, $map))) {
if ($recursepath = array_search($newpath, $map)) return drupal_get_path_alias($recursepath);
else return $newpath;
}
elseif (function_exists('conf_url_rewrite')) {
return conf_url_rewrite($path, 'outgoing');
}
else {
// No alias found. Return the normal path.
return $path;
}
}
Può ovviamente essere ottimizzata ma questa versione rende palese la ricorsione.
Questa soluzione funziona ma vorrei trovare di meglio.
Vorrei modificare direttamente la funzione che effettua la selezione dei nodi in base alla tassonomia. Purtroppo dopo moltissime ricerche non sono riuscito a venirne a capo.
La funzione "taxonomy_select_nodes" all'interno del modulo "taxonomy.module" sembra fare al caso nostro. Perdipiù il parametro "depth" (di default = 0) sembra specificare quanto "in fondo" leggere l'albero gerarchico della tassonomia.
Potreste aiutarmi ad indagare ulteriormente il problema?