Tramite phptemplate si riesce facilmente ad abbinare un template diverso a ogni tipo di contenuto (pagine, storie o a qualunque tipo di contenuto creato con flexinode). Mi sembra di aver intuito che si possa fare anche per i blocchi che, di default, sono tutti legati a block.tpl.php, ma ancora non sono riuscito a venirne a capo. Io vorrei creare, per esempio, tre blocchi (poniamo left1, left2 e left3) legati a tre template diversi (left1.tpl.php, left2.tpl.php e left3.tpl.php), è possibile farlo? Qualcuno sa darmi una dritta? Grazie. :)
Ho risolto grazie all'articolo che ho trovato QUI . :)
Anch'io avrei bisigno di personalizzare un blocco, nello specifico il blocco Search.
Vorrei inserire un form con tre menù a tendina(che ho fatto in html) e in fondo il bottone "Cerca"...è possibile?
Non riesco a visualizzare il link che hai segnalato e che ti è stato utile.
Grazie
A me il link funziona, in caso prova a copiarlo e a incollarlo
http://drupal.org/node/63757
Comunque, in pratica si tratta di aggiungere uno o più if al block.tpl.php che richiamano i template. Per fare un esempio, il mio block tpl è questo:
Questo codice dice a phptemplate come si deve comportare a differenza del blocco che vogliamo visualizzare. Nel caso del primo if, per esempio, diciamo all'engine che se il blocco richiamato è del modulo archive ($block->module == 'archive') ed è il blocco che ha per id lo 0 (&& $block->delta == '0')per visualizzarlo deve utilizzare il template archive.tpl.php(include 'block-archive.tpl.php';).
Per trovare il nome-modulo del blocco che ti interessa e il suo delta(id) ti basta attivarlo in una pagina qualunque del tuo sito drupal, andarci e guardare il sorgente della pagina (html).
A questo punto non ti resta che crearti il tuo template e il tuo css per poi richiamarlo tramite l'if.
Naturalmente puoi fare quanti if vuoi. Come vedi, nel mio esempio, ce ne sono un po' che richiamano differenti template a differenza del blocco.
Ovviamente, dopo l'ultimo if, è importante che rimanga il codice:
Che non fa altro che richiamare la grafica di default quando attiviamo un blocco che non è abbinato a nessun if.
Per quanto possibile... spero di essere stato chiaro. :)
Per quanto riguarda il search, tutto è possibile, basta perderci un po' di tempo per modificare il codice.
Se si tratta di una modifica solo grafica ti conviene mettere mano solamente al css. Non fare caso alla grafica, sono solo esperimenti, ma puoi vedere l'effetto di modifiche visuali all'indirizzo http://www.devilhouse.org/drupal
che sto usando per fare degli esperimenti su drupal.
Diciamo che io sono praticamente digiuna di php, ma dimmi se ho capito: dovrei crearmi un cerca.tpl.php che poi nel block.tpl.php dovrei richiamare con un if come mi hai mostrato?
Invece nel mio template "cerca" posso inserire tutto il codice che voglio?Devo creare un form che mi dia la possibilità di ricercare attravero le categorie che ho creato...
Quella di creare un nuovo template è secondo te la strada più veloce e facile (per una che non ne sa niente di php)o ci sono dei moduli aggiuntivi che potrebbero aiutarmi?
Dipende sempre da quello che vuoi fare. Per esempio, se devi cambiare semplicemente la grafica del box di ricerca ti conviene cambiare semplicemente i parametri del file css del tuo tema.
Nel tuo caso, però, vuoi anche aggiungere un menù a tendina e quindi, per forza di cose, devi aggiungere il codice da qualche parte. Per quanto riguarda la ricerca inclusa nell'header (e a attivabile dall'amministrazione del tuo tema) per fare quello che dici devi andare ad aggiungere il codice nella pagina vera e propria del tema (page.tpl.php) nel punto corrispondente alla casella di ricerca (insomma, nel punto del codice in cui viene richiamato il campo di ricerca). Se invece vuoi modificare il blocco ricerca (quello che attivi dall'amministrazione blocchi e non quello che appare nell'header del sito) allora ti conviene utilizzare il metodo che ti ho descrito nel post precedente; ovvero utilizzando un if che richiama un template specifico per il blocco di ricerca. Ti assicuro che è molto più difficile da spiegare che da fare, ma vediamo se ci riesco.
Allora... apri il file block.tpl.php e aggiungi questo codice all'inizio della pagina (prima di tutto)
if ( ( $block->module == 'views' && $block->delta == 'Cool Block' ) || ( $block->module == 'search' && $block->delta == '0' ) ) {
include 'block-search.tpl.php'; /*carica il template per la ricerca */
return; }
?>
Salva e chiudi.
Poi, apri il blocco note di windows e incolla questo codice:
Salva il file chiamandolo block-search.tpl.php, chiudilo e mettilo nella cartella del tuo template.
Bene, adesso puoi modificare l'aspetto del blocco search agendo sul file block-search.tpl.php (aggiungendo il codice che vuoi aggiungere, nel tuo caso quello del menù a tendina).
Spero di essermi spiegato. Se vuoi cambiare anche la grafica, non devi far altro che lavorare anche sul file style.css.
Per quanto riguarda i moduli... sinceramente non ne ho la più pallida idea se ne esiste qualcuno già fatto, però mi stupirei se esistesse per una modifica del genere. In fondo, una volta fatto quello che ti ho detto... devi semplicemente aggiungere la form nel block-search.tpl.php nel punto che ti interessa (dopo
Ciao.
Ho modificato il file block.tpl.php inserendo la funzione if che mi hai indicato;
poi ho creato search.tpl.php come mi hai detto e lì ho inserito il mio form html...
Però quando vado ad attivare il modulo di ricerca dall'amministrazione blocchi, mi succede una cosa strana: mi compare il codice nella pagina, nella barra destra e sinistra e non se ne va nemmeno se disabilito il blocco.
Che c'è di sbagliato?
Grazie
Da quel che mi scrivi... l'unica cosa che vedo di sbagliata è che il template l'hai chiamato search.tpl.php, mentre invece deve chiamarsi block-search.tpl.php
Comunque, se ti rimane l'errore anche se disabiliti il blocco, significa che hai fatto qualche errore nel file block.tpl.php
Che tema usi? Quale codice ti compare nella colonna dei blocchi? Fai una cosa, postami il codice del tuo block.tpl.php qui sul forum (possibilmente entro questa sera o al massimo domani mattina, che all'ora di pranzo parto e torno solo la settimana prossima).
Mi raccomando, per postare il codice devi selezionare testo semplice, altrimenti il codice viene tutto sballato dal filtered html del forum.
Praticamente però ho creato un nuovo blocco nel quale ho inserito del codice phpe javascript...e fin lì funziona!
Il problema ora è che la ricerca funziona solo se mi loggo come amministratore...se cerco come utente autenticato o anonimo mi dice "accesso negato"...
Se vuoi ti invio anche il codice del mio blocco che ho inserito in "conf. blocco" dalla pagina di amministrazione.
Secondo te perchè succede questa cosa?
Grazie mille
Hai attivato i permessi giusti dal controllo di accesso nell'amministrazione di Drupal?
Dall'amministrazione vai su controlli di accesso e spunta le due caselline del modulo search in corrispondenza dell'opzione cerca tra i contenuti.
Sì, la casella con il permesso di cercare tra i contenuti è abilitata per gli ospiti e per gli utenti autenticati...ma non cerca.
Non cerca nemmeno se gli do il permesso di amministrare i blocchi.
Funziona solo se entro come amministratore!
Non capisco perchè...
Ciao
ho creato un template per un determinato tipo di blocco, e va tutto bene infatti quel blocco viene visualizzato con la struttura espressa nel mio template. Non capisco perchè se invece non cè nessu utente loggato il blocco appare nel modo tradizionale se invece mi loggo sia come amministratore che come visitatore il blocco ha la forma descritta nel mio template.....
Ciao e Grazie
risolto! non avevo abilitato il permesso usa visibiltà php nei blocchi per utenti visitatori