mi stavo ponendo un problema,
Solitamente non sono uno che sceglie sempre la soluzione più "bella" stilisticamente parlando ma vado a asfociare sempre in soluzioni articolati ma funzionanti. è da temo che mi chiedevo quale potesse essere una soluzione a panels... data la sua pesantezza.
Pensate sia fattibile creare dei Content-type che corrispondono a determinati layout, quindi di conseguenza creare dei node-CONTENTYPE.tpl.php con X regione messe un poì dove ci ineterssa a noi... avendo così dei nodi in cui inserire blocchi ecc??!?
non so se sono stato chiaro ma faccio un esempio:
1) Creo il Content Type: Layout_3_Column
2) Creo quindi un node-Layout_3_Column.tpl.php con al suo interno un certo numero di regioni appositamente create a questo scopo
3) quindi ogni qual volta voglio creare una nuova pagina con un layout a 3 Colonne creo un Content Type "Layout_3_Column" ed inserisco tramite l'amministrazione dei Blocchi, alcuni blocchi limitando la visualizzazione al node/X
Mi sembra di aver capito che non sei il fan numero uno di Panels, perchè 'pesante'. Non ho capito bene il tuo idea perchè in conflitto con il modello che io ho capito di Drupal. Ti spiego (e per favore corregimi dove sbaglio):
Il contenitore principale è il page - la pagina (non il node type, ma il
<body>
del HTML)Questo viene divise in regions - regioni, pocchi o tanti secondo il template usato.
In ogni regione possiamo inserire uno o più blocks - blocchi
Possiamo creare altri blocchi (oltre a quelli fornito dal core o dai moduli aggiunti), che contengono HTML, o $P->H->P, o (per esempio) dei views. Ho avuto occasione di utilizzare Node Blocks, per esempio. Un altro interessante (ma che non ho ancora provato) e Nodequeue.
Il contenuto di un nodo va sempre nella regione
content
. Non mi pare che questo è modificabile, senza scrivere $P->H->P, e non ho avuto motivo di farlo.Fin qui mi sento su terreno solido.
Comunque ci possono essere occasioni quando questo granularità non basta. Forse vogliamo aggiungere due blocchi fianco a fianco dentro una regione, o forse vogliamo inserire blocchi dentro il contenuto di un nodo.
Nel primo esempio, Panels fornisce una soluzione, funzionando come un 'blocco di blocchi' - fa anche altre cosa, ma non voglio confondermi le idee.
Nel secondo esempio, non credevo forse possibile, ma da http://www.drupalitalia.org/node/4365 ho letto http://www.nicklewis.org/node/846 che suggerisce una soluzione, ma sempre utilizzando $P->H->P. Buono a sapere però.
Ho l'impressione che quello che stai descrivendo tu, cioè un nodo, che contiene blocchi, che contengono probabilmente altri nodi, non è altro che panels, ma con un accento italiano ;-) O più probabilmente non ho capito bene.
Comunque penso che soffrirà di 'pesantezza' come panels, non perchè sono pesante per se, ma perchè devono martellare il database per ricuperare l'informazione (e fare il rendering). Un pò come Drupal stesso, che anche per un semplice nodo fa dozzine di query SQL. Solo che Drupal ha un ottimo sistema di caching che tiene in serbo il testo già reso (rendered) per la prossima volta. Anche panels ha un cache, ma forse non cosi sofisticato.
Questi pensiere valgono due centesimi (my 2 cents)
John
Più imparo, più dubito.
Apprezzo tantissimo la tua risposto o quanto meno l'immenso interesse per la mia idea, mi sembra di capire che "funzionalmente" può essere utile l'idea ma effettivamente si guadagnerebbe ben pooco in termini di velocità perchè finirebbe per fare un enorme quantità di query quasi al pari di Panels.
Ti dò ragione che non sono un grande Fan di panels, sia perchè la sua semplicità ne induce uno uso spropositato sia perchè in termini di CSS diventa davvero ingestibile..... cercavo quindi una soluzione magari più rustica, ma che al contempo dava dei vantaggi in termini di velocità.
Mi dò una lettura ai link che mi hai passato, prossimamente aggiornerò questo thread....
Grazie
Slice2Theme Servizio per la conversione di Design in markup HTML e/o temi.
WeBrain Solution | Pillsofbits Of Bits
Comunque la tua idea mi ha stuzzicato...
Sto sperimentando (ma ci vuole qualche giorno, sono corto di tempo) con quest'idea:
Se accettiamo che vogliamo usare un 'panels light o lite' che gestisce solo il posizionamento di elementi, si potrebbe utilizzare Gpanels ed una serie di CCK text fields.
Un semplice esempio, body remane il contenuto del teaser, ed il contenuto della colonna centrale in modo page, ma
creo un text field left ed un altro right
se uno o l'altro viene usato (contiene testo) allora utilizzo un Gpanel (2 o 3 colonna) per la visualizzazione.
Ovvio che devo scrivere un pò di $P->H->P nel template node-node-type.tpl.php
Links per Gpanels:
http://adaptivethemes.com/wtf-are-gpanels
http://adaptivethemes.com/gpanels-busted-for-illegal-steriod-use-but-omg...
[Modified]
http://drupal.org/node/460800
http://drupal.org//node/439670
E' una proposta valido?
John
Più imparo, più dubito.
direi che è un'ottimo inizio!...
soprattutto perchè questo esempio è molto simile alla mia idea e forse-forse vale la pena almeno provare a vedere se questa soluzione potrebbe dare qualche spunto interessante.
dò un occhiata ai link e ti faccio sapere.
Slice2Theme Servizio per la conversione di Design in markup HTML e/o temi.
WeBrain Solution | Pillsofbits Of Bits
CCK text fields + Gpanels
Bene, oggi sono riuscito a farlo funzionare.
Usando il mio povere sandbox (reduce di tanti progetti) ho fatto le seguente modifiche:
page
ho aggiunto due campi CCK Text/textarea/5 righe, il primo chiamato 'Text Left'/field_text_left, e il secondo 'Text Right'/field_text_rightgenesis-DRUPAL-6--2/genesis/css/uncompressed/layout.css
asandbox/themes/garland/gpanel-layout.css
sandbox/themes/garland/garland.info
aggiungendo la riga:stylesheets[all][] = gpanel-layout.css
node.tpl.php
chiamatonode-page.tpl.php
<?php print $content ?>
) con:<?php
$left = $node->field_text_left[0]['view'];
$right = $node->field_text_right[0]['view'];
$center = $node->content['body']['#value'];
if ($left && $right) {
print '<div class="three-col-33 gpanel clear-block">';
print ' <div class="section region col-1 first">';
print ' <div class="inner">';
print $left;
print ' </div>';
print ' </div>';
print ' <div class="section region col-2">';
print ' <div class="inner">';
print $center;
print ' </div>';
print ' </div>';
print ' <div class="section region col-3 last">';
print ' <div class="inner">';
print $right;
print ' </div>';
print ' </div>';
print '</div>';
}
else if ($left) {
print '<div class="two-col-50 gpanel clear-block">';
print ' <div class="section region col-1 first">';
print ' <div class="inner">';
print $left;
print ' </div>';
print ' </div>';
print ' <div class="section region col-2 last">';
print ' <div class="inner">';
print $center;
print ' </div>';
print ' </div>';
print '</div>';
}
else if ($right) {
print '<div class="two-col-50 gpanel clear-block">';
print ' <div class="section region col-1 first">';
print ' <div class="inner">';
print $center;
print ' </div>';
print ' </div>';
print ' <div class="section region col-2 last">';
print ' <div class="inner">';
print $right;
print ' </div>';
print ' </div>';
print '</div>';
}
else {
print $content;
}
?>
E funziona abbastanza bene. Devo cambiare i due colonne da 50%|50% a 33%|66% o 66%|33%, e tre colonne a 25%|50%|25% ma va bene cosi per oggi...
John
Più imparo, più dubito.
interessante! ... Almeno vederlo funzionare!
Lo studio un po' e ti tengo aggiornato su questo post.
Kind Regards
Slice2Theme Servizio per la conversione di Design in markup HTML e/o temi.
WeBrain Solution | Pillsofbits Of Bits
Io mi trovo più comodo con Template Suggestions.
1. Creo un "node-my_content_type.tpl.php" e un "page-node-my_content_type.tpl.php".
2. Codice *.css da inserire in "page-node-my_content_type.tpl.php":
<style>
.title {color: #555555; }
.immagine img { padding:4px; border: 1px solid #CCCCCC; margin-left:3px; }
.contenitore { border: 1px solid #CCCCCC; width:100%; height:330px; }
/* --------------------------------------- */
.div_01 { clear:both; width:250px; height:155px; border:1px solid blue; margin-left:5px; margin-top:5px; float: left; }
.div_02 { width:50px; height:155px; border:1px solid lime; margin-left:5px; margin-top:5px; float:left; }
.div_03 { width:200px; height:155px; border:1px solid aqua; margin-left:5px; margin-top:5px; float:left; }
.div_04 { width:5px; height:155px; border:1px solid fuchsia; margin-left:5px; margin-top:5px; float:left; }
.div_05 { width:5px; height:155px; border:1px solid olive; margin-left:5px; margin-top:5px; float:left; }
.div_001 { clear:both; width:200px; height:155px; border:1px solid blue; margin-left:5px; margin-top:5px; float: left; }
.div_002 { width:80px; height:155px; border:1px solid lime; margin-left:5px; margin-top:5px; float:left; }
.div_003 { width:150px; height:155px; border:1px solid aqua; margin-left:5px; margin-top:5px; float:left; }
.div_004 { width:25px; height:155px; border:1px solid fuchsia; margin-left:5px; margin-top:5px; float:left; }
.div_005 { width:40px; height:155px; border:1px solid olive; margin-left:5px; margin-top:5px; float:left; }
</style>
3. Codice php+html da inserire in "node-my_content_type.tpl.php" al posto di
<?php print $content ?>
:<?php
$field_immagine = $node->field_immagine[0]['view'];
$field_email = $node->field_email[0]['view'];
?>
<div class="contenitore">
<div class="div_01"><?php print $field_immagine; ?></div>
<div class="div_02">Data</div>
<div class="div_03"><b>Coordinate:</b><br /><?php print $field_email; ?></div>
<div class="div_04"></div>
<div class="div_05"></div>
<div class="div_001">Data_01</div>
<div class="div_002">Data_01</div>
<div class="div_003">Data</div>
<div class="div_004"></div>
<div class="div_005"></div>
</div>
</div>
Secondo me è più snello e potente con html e css; ci puoi fare dei layout che non hanno limiti in quanto a personalizzazione!
Boh... magari ho frainteso il progetto proposto da Jhon, se fosse così abbiate pazienza...
Già che ci sono una domandina:
E' possibile fare lo stesso con le Views e cioè "mia_views-my_content_type.tpl.php" in modo da temizzare anche le Viste?
Si, lo so, dovrebbero essere nella lista degli esempi alla pagina che tratta Template Suggestions che adesso dovrei cercare il link... chiedo questo così, se non dovesse essere possibile (facciò subito dei test...), ho portato avanti il post e spero di avere la risposta in caso fossi fuori strada.
Grazie
Ciao ragazzi
Kipper
si dovresti poterlo fare anche li, adesso non ricordo con precisione i file tpl di views e quindi non so dirti se il file che mi hai indicato è quello corretto, ma in generale puoi fare theming anche li nello stesso modo in cui lo fai in qualsiasi altro file tpl....
comunque l'idea che hai proposto è molto simile a quello che farei nel caso in cui avessi necessita di usare un'alterantiva a Panels...
Slice2Theme Servizio per la conversione di Design in markup HTML e/o temi.
WeBrain Solution | Pillsofbits Of Bits