Creare blocchi Quicktab popolati da campi cck
Ho provato a creare una pagina di prodotto con alcune informazioni, un'immagine e poi due schede in basso con informazioni aggiuntive (ingredienti e nutrizione). È stato facile con modulo quicktabs. Una volta installato, ho dovuto creare due nuovi blocchi, ingredienti e nutrizione. Poi sono andato nella sezione quicktabs del pannello di amministrazione, ho creato una nuova quicktab, ho creato due schede di tipo blocco in quella, e le ho popolate con i blocchi appena creati, nutrizione e ingredienti. Poi sono dovuto andare nella pagina di riepilogo dei blocchi e attivare il nuovo blocco quicktab, rendendolo visibile per la pagina appena creata in un'area di blocco sotto il contenuto (Content-bottom, ho un tema basato su Zen).
Sarebbe andato bene se:
- Sarei io a creare le pagine dei prodotti.
- Ci sono da uno a cinque prodotti diversi.
Ma:
- Chi crea i prodotti è solo un comune uomo d'affari, non uno che ha il tempo o le capacità tecniche per creare molti blocchi e quictab.
- Ci sono circa 70-100 prodotti...
Un altro problema è che apparirebbero 70-100 blocchi con la nutrizione, 70-100 blocchi con gli ingredienti e 70-100 blocchi Quicktabs nella parte inferiore del contenuto, tutti attivati per la singola pagina del prodotto a cui sono collegati. Quindi questa non era nemmeno un'opzione, ho iniziato così, ma dopo tre prodotti ho capito che non potevo fare così. Allora ho cercato altri moduli, come Tabs, CCK Fieldgroup tabs, e così via, ma non ne ho trovato nemmeno uno che potesse risolvere il mio problema. Ho scoperto che quello che volevo erano due campi CCK extra nella visualizzazione in cui si aggiunge un nuovo prodotto (tipo nodo prodotto), in modo da poter inserire gli ingredienti e i nutrienti nello stesso momento in cui si crea il prodotto, e questi campi sarebbero poi apparsi in un quick-tab-block nel content-bottom per quella pagina automaticamente quando si salva la pagina.
Come ho fatto a risolvere il problema?
All'inizio ho creato due nuovi campi CCK e li ho fatti apparire sotto il corpo del nodo di tipo prodotto. In questo modo i due campi apparivano l'uno sotto l'altro e si potevano compilare le informazioni contemporaneamente alla creazione del prodotto. Ora dovevo solo farli apparire in una scheda invece che uno sotto l'altro. Ho provato a cercare nella mia testa e su Google qualche javascript che potessi usare facilmente per questo, ma nessuno di loro è riuscito a darmi una soluzione facile e di bell'aspetto che funzionasse alla "maniera di Drupal". Tra l'altro, non mi piace creare il mio javascript.
Poi ho pensato che posso escludere questi due campi dalla vista e magari estrarli dal nodo in una quicktab che posiziono nel content-bottom. Ma poi ho visto che Quick-tabs NON ha un'opzione per mostrare i campi CCK in un modulo a schede. Questo mi sembra un po' stupido. Il passo successivo è stato quello di scavare nella mia testa e su Google per trovare un po' di conoscenza di php, dovevo davvero farlo funzionare ora. Ho scoperto che si può inserire un campo CCK in un blocco su questo sitoe ora è diventato chiaro. Ho attivato il modulo php-filter incluso nel core di Drupal. Ho cancellato tutti gli stupidi blocchi qucktab che avevo creato e tutti i blocchi ingredienti e nutrizione dalla pagina di visualizzazione dei blocchi. Poi ho creato un nuovo blocco per gli ingredienti, che includeva questo fantastico codice php:
.
E Voilà!
Ora il cliente può creare un prodotto e inserire le informazioni di base, caricare l'immagine, compilare il campo nutrizionale, compilare il campo degli ingredienti e salvare. Tutto nella stessa pagina. Quando il prodotto viene salvato, tutto appare come dovrebbe nella pagina del prodotto! Qui potete vedere la pagina in cui utilizzo questa soluzione: Musch.fi/barf (in finlandese) o qui Musch.fi/sv/barf (in svedese).
I plugin che ho utilizzato per realizzare questo progetto sono i seguenti:
- CCK
- Schede rapide
- Filtro Php (incluso nel nucleo)
Questa è una soluzione abbastanza semplice al mio problema, finché Quick-tabs non inizierà a supportare i campi cck per le schede. Non so se qualcun altro ha avuto questo problema, ma in ogni caso ho dovuto scrivere la mia soluzione da qualche parte se ne avessi bisogno altre volte.