Ciao a tutti, uso molto poco il forum perché da quando uso drupal per i miei siti riesco a cavarmela piuttosto bene anche da solo grazie alle potenzialità raggiunte dal CMS.
Credo che la mia richiesta sia piuttosto semplice, eppure non riesco a venirne fuori.
Descrivo lo scenario:
Ho aggiunto nel nodo un campo personalizzato "Categoria" al quale ho associato un termine di un vocabolario. Nel mio caso il vocabolario è "progetti" e uno dei termini "educazione".
Vorrei che il termine venisse stampato a video prima del titolo, in modo da ottenere nella pagina una visualizzazione di questo tipo:
Educazione
Titolo dell'articolo
Contenuto (body)
Con drupal posso posizionare facilmente i campi da amministrazione, ma non in modo tale da ottenere quanto desiderato.
Ottengo infatti:
Titolo dell'articolo
Categoria
body
Allora ho pensato di creare un template nodo personalizzato (node--progetti.tpl) e inserire nel file un richiamo PHP di questo tipo:
<?php
print render($content['field_tags']);
?>
ho provato anche con una pagina personalizzata (page--progetti.tpl)
e ho provato (sembra che però con drupal 7 non sia necessario) a usare la funzione template_preprocess
Ho provato diverse varianti di questa tecnica indicate su drupal.org, ma in nessun caso riesco nell'impresa. non sono pratico di PHP, e sicuramente c'è qualcosa che sbaglio.
c'è molta documentazione su Drupal6, ma con Drupal7 le cose sono cambiate, essendo le tassonomie dei campi come tutti gli altri.
Potrebbe interferire il fatto che sto usando delle Viste per mostrare i contenuti nelle categorie?
GRazie mille in anticipo!
Ciao, il titolo della pagina viene stampato dentro ai file page.tpl.php quindi devi agire su questi se vuoi far stampare qualche cosa prima del titolo.
Io tramite preprocess_page creerei un $variables['categoria'] che poi andrei a visualizzare prima del titolo.
M.
--
Michel 'ZioBudda' Morelli -- [email protected]
Sviluppo applicazioni CMS DRUPAL e web dinamiche -- Corsi Drupal -- Amministrazione Drupal -- Hosting Drupal
Ciao ziobudda, e grazie mille per avermi messo sulla buona strada:
la logica funziona: il nodo viene stampato all'interno della pagina, quindi il richiamo va nella pagina!
Sto cercando di fare amicizia con il php, ma sono ancora molto indietro. Inoltre mi pare di capire che molte di queste cose sono cambiate da Drupal6, e sto cercando di mettere assieme dei pezzi da altre situazioni per cercare di capire cosa accade quando inserisco del codice.
Ho provato a creare una funzione con taxonomy_term_load dopo aver provato altre strade e prendendo spunto da http://api.drupal.org/api/drupal/modules!taxonomy!taxonomy.module/functi...
function miotema_preprocess_page(&$variables) {
if(arg(0) == 'taxonomy' && arg(1) == 'term') {
$tid = (int)arg(2);
$term = taxonomy_term_load($tid);
if(is_object($term)) {
$variables['categoria'][] = 'page__progetti__'.$term->vocabulary_machine_name;
}
}
}
dove categoria è il campo personalizzato. Non mi restituisce errore ma neppure alcun risultato nell'output della pagina. specifico, se può servire, che nel mio file template non c'è una funziona che specifica vocabulary_machine_name
Confesso che sto andando un po' alla cieca, cercando di comunicare con drupal %|
Alla fine ne sono uscito grazie al contributo della community drupal.org.
Nel file template.tpl va creata la funzione:
function NOMETEMA_preprocess_page(&$vars) { //sostituisci NOMETEMA con il nome del tema in uso
if (isset($vars['node']->type)) {
$vars['theme_hook_suggestions'][] = 'page__' . $vars['node']->type;
}
}
Mentre nella pagina del template va richiamato