blog: gestione categorie e tag

13 contenuti / 0 new
Ultimo contenuto
blog: gestione categorie e tag

Ennesima richiesta di aiuto per creare un blog con Drupal!

Con taxonomy, potrei gestire le categorie selezionandole da un elenco a tendina di categorie predisposte oppure spuntando la casella tag del vocabolario, così chi inserisce le parolette chiave all'interno della form del nodo, ne crea i termini rispettivi qualora questi siano nuovi termini.

Io però vorrei continuare ad avere i termini prefissati, così da poter inserire gli articoli all'interno di una struttura direi rigida e poi inserire in fondo all'articolo una serie di parole chiave, che finora le ho chiamate tag.

È possibile fare una cosa simile con Drupal?

Grazie

Quote:
È possibile fare una cosa simile con Drupal?

ti crei un dizionario riferito al contenuto blog
e poi spunti le caselle
Settings
Tags
Terms are created by users when submitting posts by typing a comma separated list.
Multiple select
Allows posts to have more than one term from this vocabulary (always true for tags).

Eh ma sparisce il menu a tendina nella form per lasciare un campo testo per i tag che via via creano i termini del vocabolario... Io invece vorrei mantenere il menu a tendina per la categoria del nodo e inserire un campo testo per le parole chiave riferite al nodo stesso...

Non so se ho reso l'idea :O

è una pratica comune:
crei un vocabolario a scelta singola, non tag, magari obbligatorio per le categorie (ad es. politica, sport, ecc) e un altro per le parole chiave di tipo tag;
associ entrambi al node type "blog"
in questo modo chi scrive un post deve selezionare una categoria e opzionalmente può inserire un numero variabile di tags

<a href="mailto:[email protected]" rel="nofollow">[email protected]</a> wrote:
è una pratica comune:
crei un vocabolario a scelta singola, non tag, magari obbligatorio per le categorie (ad es. politica, sport, ecc) e un altro per le parole chiave di tipo tag;
associ entrambi al node type "blog"
in questo modo chi scrive un post deve selezionare una categoria e opzionalmente può inserire un numero variabile di tags

mmm indi avrei sostanzialmente dei vocabolari "gemelli", uno per i tag (dinamico) e un altro per le categorie d'appartenenza (statico).
L'idea mi piace: non ci avevo pensato ma di per sé ha una logica che non si può dirle niente...

Grazie.

di solito faccio anche io cosi :)

asdomar wrote:
di solito faccio anche io cosi :)
e mi sa anche io adotterò il metodo ;)

altra domanda. come devo fare per implementare un qualcosa del genere via code?

Quote:
come devo fare per implementare un qualcosa del genere via code?

perchè ti devi complicare la vita?
per fare quella roba via codice devi avere ottima padronanza delle API. e non è cosa semplice...

Non mi voglio complicare la vita ma devo consegnare un moduletto che fa anche queste cose qua... Non avrei molta scelta: non posso andare là e dire "ve lo configuro io".

Partendo dal presupposto che a gestire la taxonomy di base via code non è un problema (a parte ripassare le funzioni che mo non ricordo minimamente), il dubbio mi assale nel momento in cui salvo il vocabolario, possa settare anche quelle impostazioni di cui sopra.

Vedo un po', grazie, gentilissimo. ^^

Ehm, mi sarà sfuggita qualcosa oppure questo modulo non fa al caso mio - nel frattempo ho espletato altri lavori -.
Ho letto la doc, visto le api, provato qualche esempio.

Riassunto dei post precedenti.
Ho installato features, che sembra promettente e, dalla paginetta l'unico "contatto" con taxonomy è dovuto alla dipendenza data; tra l'altro tra il menu "tipi di contenuto" nemmeno vede il blog - ma ho visto si può aggiungere al .info a manella -.

I miei test...
Ho provato comunque ad exportare una feature, ed ecco il risultato.
tax_blog.info
core = "6.x"
dependencies[] = "taxonomy"
description = "Gestione termini e categorie tassonomia"
name = "Tax Blog"
package = "Features"
project = "tax_blog"
version = "6.x-1.0alpha1"

tax_blog.module

<?php
</code></code>
// Drupal needs this blank file.
?>

Risultati finali.
Infine, se date un'occhiata qui, precisamente al paragrafo Compatibility, troverete alla fine la seguente:

Quote:

  • [...lista di moduli...]
  • Taxonomy vocabularies *

* Currently in development.

ARGH!! O no? :O

mmm forse un falso problema?

Esiste una funzione semplicissima, la taxonomy_save_vocabulary, che prende un array come parametro.

L'array in questione potrebbe essere questo:

array(16) {
  ["name"]=>
  string(19) "Test Categoria Nome"
/*
Ma questo hash module (Machine name) a che serve?
Su DB, tabella vocabulary, lo setta come module, ma il suo perché al momento mi è oscuro :O
*/
["module"]=>
  string(31) "features_test_categoria_machine"
  ["description"]=>
  string(26) "Test Categoria Descrizione"
  ["help"]=>
  string(20) "Test Categoria Testo"
  ["nodes"]=>
  array(2) {
    ["blog"]=>
    string(4) "blog"
    ["page"]=>
    string(4) "page"
  }
  ["tags"]=>
  int(0)
  ["multiple"]=>
  int(1)
  ["required"]=>
  int(1)
  ["weight"]=>
  string(3) "-10"
  ["hierarchy"]=>
  string(1) "0"
  ["relations"]=>
  string(1) "1"
}

Ho messo in risalto due parti dell'array. La prima la esplicherò dopo, ora esplicherò la seconda.

Attraverso gli hash tags, multiple, required posso gestire dando un booleano (ok, castato a int) quelle che sono le opzioni di un qualsiasi vocabolario qualsiasi, da me ricercate: Tag, Selezione Multipla, Richiesto.

Avevo creato questo e un altro vocabolario dopo aver installato Features, e ho visto che aveva aggiunto un campo alla form per creare i vocabolari: Machine name.
Andando poi nella pagina di features, ho selezionato da Edit components: la voce Taxonomy che mi ha dato i due vocabolari che disponevano del Machine name settato.

Esportando la feature mi è apparso il seguente pacchetto.
ennesimo_test.info

core = "6.x"
dependencies[] = "features"
dependencies[] = "taxonomy"
description = "Ennesimo Test"
features[taxonomy][] = "test_categoria_machine"
features[taxonomy][] = "test_tag_machine"
name = "Ennesimo Test"
package = "Features"

ennesimo_test.module
<?php
// Drupal needs this blank file.
?>

ennesimo_test.features.taxonomy.inc
<?php
 
/**
 * Implementation of hook_taxonomy_default_vocabularies().
 */
function ennesimo_test_taxonomy_default_vocabularies() {
  return array(
   
'test_categoria_machine' => array(
     
'name' => 'Test Categoria Nome',
     
'description' => 'Test Categoria Descrizione',
     
'help' => 'Test Categoria Testo',
     
'relations' => '1',
     
'hierarchy' => '0',
     
'multiple' => '1',
     
'required' => '1',
     
'tags' => '0',
     
'module' => 'features_test_categoria_machine',
     
'weight' => '-10',
     
'nodes' => array(
       
'blog' => 'blog',
       
'page' => 'page',
      ),
    ),
   
'test_tag_machine' => array(
     
'name' => 'Test Tag Nome',
     
'description' => 'Test Tag Descrizione',
     
'help' => 'Test Tag Testo',
     
'relations' => '1',
     
'hierarchy' => '0',
     
'multiple' => '1',
     
'required' => '0',
     
'tags' => '1',
     
'module' => 'features_test_tag_machine',
     
'weight' => '-10',
     
'nodes' => array(
       
'blog' => 'blog',
       
'page' => 'page',
      ),
    ),
  );
}
?>

Sostanzialmente l'array indicato prima da me...

Adesso il mio hook_install del modulo prevederebbe una cosa simile:

<?php
$edits
= array(); #array di array che definiscono i vocabolari in questione
foreach ($edits as $edit) {
 
taxonomy_save_vocabulary($edit);
}
?>

Per i termini esiste qualcosa di simile, vale a dire una funzione ad hoc; ma non è affar mio, nel senso che il destinatario del modulo si implementerà i termini come gli pare e piace.

Scusate mi son dilungato un po' troppo, ma potrebbe servire anche ad altri, me compreso, per chi magari non padroneggia per bene queste cose.
In ogni caso mi aspetto eventuali feedback.