Stesso tipo di contenuto, due template diversi

4 contenuti / 0 new
Ultimo contenuto
Stesso tipo di contenuto, due template diversi

ciao

devo presentare una scheda prodotto molto complessa, che a seconda del contesto dovrebbe mostrare una serie di valori comuni più una serie di valori contestuali.
- creo un nuovo tipo di contenuto: "scheda prodotto";
- nello specifico con CCK il primo valore che immetto è il "tipo scheda", con variabili "tipo A", "tipo B" e la possibilità di selezionarli entrambi.
- con views mi creo due viste, quella che elenca le schede di "tipo A" e quella che mi elenca le schede di "tipo B".

fino a qui nessun problema, il problema sorge quando vado a visualizzare la "scheda prodotto" a cui non riesco ad assegnare un template diverso a seconda che il tipo sia A o B.

Nel tipo A avrò un certo tipo di grafica e verranno mostrati una serie di valori specifici A, oltre che ai valori comuni;
Nel tipo B avrò avrò un'altra grafica e verranno mostrati una serie di valori specifici B, oltre che ai valori comuni.

Concettualmente non riesco a risolvere la situazione... se non ne vengo a capo dovrò creare due tipi di contenuto A e B... però questo complicherà un po' la vita a chi dovrà riempire le schede prodotto....

se avete qualche idea ve ne sarò grato!

faccio un esempio concreto, che manco io capisco cosa ho scritto. :-)

ho un catalogo di DVD+VHS. voglio fare un tipo di contenuto unico, visto che tra i due cataloghi le differenze sono minime.

Nel contenuto film avrò un campo che mi dirà se fa parte del catalogo DVD, del catalogo VHS o tutti e due.
ci saranno i soliti contenuti comuni più alcuni particolari per DVD / VHS, come l'imballo, tipo di nastro, cover, contenuti extra, regione ecc. ecc.

quindi faccio le mie due views, una che mi elenca i dvd e una i vhs.

quando vedo la scheda dvd voglio vedere solo i dettagli relativi al dvd, mentre quando guardo la scheda VHS non voglio visualizzare dati come contenuti extra, regione, ecc. inoltre le foto sono diverse tra dvd e vhs.

per fare ciò ho bisogno di assegnare due template allo stesso tipo di contenuto...
che dovrebbero innescarsi a secondo se sulla scheda ci si arriva dalla lista dvd o dalla lista vhs...

come faccio?

un paio di ipotesi (sotolineo "ipotesi"):

ipotizzando che hai un node type "prodotto" con un campo di testo chiamato "formato supporto" con scelta tra DVD o VHS
nel tuo template.php, nella funzione tuotema_preprocess_node (&$vars) inserisci qualcosa del tipo:

<?php
 
if ($vars['node']->type == 'prodotto') {
   
$vars['template_files'][] = "node-prodotto-" . $node->content['formato_supporto'][0]['value'] //qui bisogna vedere come prendere correttamente questo valore da $node
 
}
?>

questo DOVREBBE renderti accessibili i templates
node-prodotto-vhs.tpl.php
node-prodotto-dvd.tpl.php

in alternativa "dvd" e "vhs" possono essere i termini di un vocabolario "formato" (con ad es tid=1 e tid=2) ed allora avrai:

<?php
function tuotema_preprocess_node(&$vars) {
  foreach (
$vars['node']->taxonomy as $term) {
   
$vars['template_files'][] = 'node-term-'. $term->tid;
  }
}
?>

e quindi:
node-term-1.tpl.php
node-term-2.tpl.php

del secondo sono abbastanza sicuro anche se non ho sottomano il codice che ho testato.
per il primo bisogna provarci...

grazie per la risposta.

pensavo pure io di risolvere con degli if ($node->content['formato_supporto'][0]['value'] == 'dvd') print campi specifici dvd else print campi specifici vhs.

c'è un però... alcune schede fanno parte sia della famiglia dvd che della famiglia vhs.

sul come vengono mostrare dipende da dove si arriva... vista elenco dvd o vista elenco vhs.
si può passare una variabile dalla vista alla scheda in qualche modo?