[RISOLTO]Un consiglio su blocchi completamente personalizzati

10 contenuti / 0 new
Ultimo contenuto
[RISOLTO]Un consiglio su blocchi completamente personalizzati

Ciao ragazzi
vorrei avere un vs parere in merito prima di accingermi a passare ore ed ore a fare test di fattibilità.

Avrei l'esigenza di creare dei blocchi da personalizzare completamente , con l'inserimento di ..chiamiamoli ...ulteriori div annidati all'interno.

Visto che da sistema non è possibile intervenire sulla personalizzazione di un block.tpl.php in quanto anch'esso ha un omnicomprensivo

<?php
 
print $content 
?>
mi è venuta l'idea di inserire il blocco in una pagina ricostruendo esattamente la struttura del blocco stesso ed andando ad inserire i div laddove mi occorrano.
Un piccolo esempio:

<?php
 
<div class="clear-block block block-views righttriangleblock" id="block-views-Entertainment-block_1">
<
div class="views-field-field-image-fid">
                <
span class="field-content"></span>
</
div>
<
div class="views-field-teaser">
                  <
div id="MIO PRIMO DIV PERSONALIZZATO"></div>
                  <
div id="MIO SECONDO DIV PERSONALIZZATO"></div>
                <
div class="field-content"><p>some text...</p></div>
  </
div>
</
div>
?>

Secondo voi ha senso e soprattutto funzionerebbe dopo avere creato il blocco da Views?
Posso sostituire nel block-mioblocco.tpl.php

<?php
 
print $content
?>
con
<?php
 
print $tutto_quello_che _voglio_io
?>

Ci sono altre strade più semplici ?

Ciao Bohz

grazie delle indicazioni. Le ho studiate un po' ma non riesco a capire come (e se possibile) destrutturare il "print $block->content" e specificare singolarmente il contenuto del content.

in modo che io possa aggiungere dei div prima del teaser. In pratica vorrei ottenere questo risultato :

"print view-field-title"
"print view-field-image"

"print view-field-teaser"

Sono io che non lo vedo o sto chiedendo troppo ?

Rieccomi...
Se non ho capito male dovrei "personalizzare" la vista di un blocco, partendo dal metodo qui descritto:
http://www.drupalitalia.org/node/12482

...corretto?

Se si mi rimane da chiedere dove posso trovare le variabili del $block->content, che credo siano diverse dal $node->

Giusto ?

ma forse è più semplice se usi questo
http://drupal.org/project/blocktheme
e guardi questo
http://mustardseedmedia.com/podcast/episode13

$block->content non lo puoi destrutturare a priori. non è un nodo. ogni blocco è unico ed in partenza $block->content è vuoto.
insomma, prima ci devi metter dentro qualcosa, poi lo puoi manipolare.

Hi motocad
...blocktheme è già parte integrante di tutti i miei siti ;-)
..e lo uso con molta soddisfazione in quanto già permette di utilizzare e personalizzare più "classi" di blocchi.
Proprio partendo da blocktheme e da uno dei sui blocchi, personalizzato attraverso la classe assegnata , vorrei andare "oltre" e poter "manipolare" la parte $teaser per creare una grafica avanzata.

Proprio per questo ho necessità di "scomporre" il semplice $block->content e ricostruirlo voce per voce in modo da poter customizzare il comportamento delle singole view-field.

Ti spiego anche cosa voglio fare: sono riuscito a trovare il modo di emulare una specie di "wrap-text-from-shapes" e dare un poco più di vivacità al testo e alle pagine del sito che vorrebbero essere più simili ad una testata cartacea e quindi con più differenze tra l'una e l'altra.
Ci riesco già, ma al momento il mio hack mi va a coinvolgere l'intero $block->content, con non poche difficoltà di impostazione. Se riuscissi ad isolare ALMENO il $teaser (che contiene il testo da formattare diversamente) avrei risolto il mio problema!! :-)

Grazie comunque ...e se ti viene qualche idea...

<a href="mailto:[email protected]" rel="nofollow">[email protected]</a> wrote:
$block->content non lo puoi destrutturare a priori. non è un nodo. ogni blocco è unico ed in partenza $block->content è vuoto.
insomma, prima ci devi metter dentro qualcosa, poi lo puoi manipolare.

Ovvio Bohz, se nel blocco non c'è nulla, $block->content non stampa nulla. Ma nel mio CREATO CON UNA VIEW c'è:
Node->title
Content->subtitle
Content->image
Node->teaser

sia che imposti nella View il row style come "fields" che come "node".

Come spiegavo prima a @motocad, sono quasi soddisfatto di quello che sto facendo e cioè "impaginare il testo attorno ad una forma (image). La cosa mi riesce abbastanza bene ed abbastanza velocemente anche grazie al tool online "ccsTextWrapper" .

Il problema, se possiamo chiamarlo così, ma è tale solo perchè mi rende il processo un poco più lungo, è questo, semplificando. Se io inserisco in MioBlock.tpl.php i seguenti "div" prima di "print $block->content" il tutto mi va ad impattare su TUTTO il content e quindi devo riparametrare a manina la lunghezza dei div PER ADESSO impattano anche su Node->title, Content->subtitle.

<?php <?php if (!empty($block->subject)): ?>
  <h2><?php print $block->subject ?></h2>
<?php endif;?>
<div class="content">
<div style="float:left;clear:left;height:15px;width:0px"></div><div style="float:right;clear:right;height:15px;width:200px"></div>
<div style="float:left;clear:left;height:15px;width:0px"></div><div style="float:right;clear:right;height:15px;width:289px"></div>
<div style="float:left;clear:left;height:15px;width:0px"></div><div style="float:right;clear:right;height:15px;width:291px"></div>
<div style="float:left;clear:left;height:15px;width:0px"></div><div style="float:right;clear:right;height:15px;width:388px"></div>
<?php print $block->content ?>
</div></div> ?>

Il mio obiettivo sarebbe quello di poter fare una cosa del genere:

<?php if (!empty($block->subject)): ?>
  <h2><?php print $block->subject ?></h2>
<?php endif;?>
<div class="content">
<div class="title"><?php print $block->view-field-title ?></div>
<div class="subtitle"><?php print $block->view-field-subtitletitle ?></div>
  <div class="image"><?php print $block->view-field-image ?></div>
<div style="float:left;clear:left;height:15px;width:0px"></div><div style="float:right;clear:right;height:15px;width:200px"></div>
<div style="float:left;clear:left;height:15px;width:0px"></div><div style="float:right;clear:right;height:15px;width:289px"></div>
<div style="float:left;clear:left;height:15px;width:0px"></div><div style="float:right;clear:right;height:15px;width:291px"></div>
<div style="float:left;clear:left;height:15px;width:0px"></div><div style="float:right;clear:right;height:15px;width:388px"></div>
<div class="teaser"><?php print $block->view-field-teaser ?></div>
</div>

e quindi andare a far impattare i div aggiunti SOLO sul corpo del teaser.
Solo che non so come cacchiolina indicare SINGOLARMENTE UNO PER UNO quello che c'è dentro $block->content

It's no possible?

Ciao, ma non è che stai facendo un po' di confusione? Il blocco è il contenitore, mentre la vista crea il contenuto. Quindi devi themizzare l'output della vista che poi sarà messo dentro al blocco tramite $block->content.

M.

--
Michel 'ZioBudda' Morelli -- [email protected]
Sviluppo applicazioni CMS DRUPAL e web dinamiche -- Corsi Drupal -- Amministrazione Drupal -- Hosting Drupal

Ciao, appena ho letto il tuo post mi sono detto "ecco qua...per l'ennesima volta non sono riuscito a spiegarmi bene"..ma poi ho anche pensato " porco budda..ziobudda non parla mai a vanvera...quindi se mi ha dato queste indicazioni un motivo ci sarà...eh già..." :-)
Ma dov'è l'inghippo? Se devo modificare un nodo vado a modificare node-mionodo.tpl.ph, una pagina su page-node-mionodo.tpl.ph...mi sembra naturale che se devo modificare il mio blocco vada a modificare il mioblock.tpl.php.E poi node.tpl.php e page.tpl.php esistono anche senza Views...che c'azzecca quindi Views?

Un po esasperato chiudo il pc e mi prendo una luuuuuuuuunga pausa caffè.

Improvvisamente vengo folgorato da un pensiero. Uno dei primi template che avevo preso all'inizio del mio percorso con Drupal (già bell'impacchettato perchè allora non sapevo nulla) conteneva una discreta sfilza di files views-view-unformatted-nomedellaview-block.tpl.php e ricordavo anche che se creavo un nuovo tipo di content e view corrispondente DOVEVO, se volevo che avesse l'aspetto degli altri, duplicarne uno e rinominarlo con il nome della nuova view.
Oh poca zozza.....mumble mumble.....nooooo...non dirmi ......

Corro su Google e digito due parole "theming views" , leggo un poco di documentazione e scopro che views permette, attraverso possibili file da creare ex-novo, di themizzare qualsiasi tipo di singolo output. Sapevo che Views poteva essere temizzato (pensavo solo nell'insieme, tipo un blocco, magari assegnando delle classi personalizzate) ma avendo fatto finora template tutto sommato normali e senza esigenze particolari, le modifiche ai file e ai Css bastavano. Ora invece volendo fare grafica un poco più avanzata....

Per farla breve, decido di fare un piccolo test.
Creo il file "views-view-field--miocontenuto--block--teaser.tpl.php" così come mi suggerisce il Theme Information della view e lo lascio vuoto.
Svuoto la cache di Drupal e faccio il refresh: Il Teaser è sparito...bene bene...oramai conosco Drupal...il nuovo file si è quindi "appropriato" della visibilità del solo teaser.
Vado a scivere nel file il semplice codice

<?php
 
print $output;
?>
refresh e .....riappare il teaser, anche se formattato normalmente.
Vado a prendere i "div" che avevo precedentemente inserito in mioblock.tpl.php e li inserisco nel mio nuovo file prima del "print $output".
Adesso il mio testo è formattato seguendo la struttura dei div di "formattazione" e senza andare a compromettere tutta la struttura del blocco.

Aveva ragione ziobudda...eh già !!
E che ringrazio infinitamente...nice nice suggestion.

Allego screenshot per chi volesse dare una occhiata a cosa sto lavorando.Ovviamente solo dei test di fattibilità come base di ulteriore sviluppo.
I testi sono fake.
Entrambi customizzati (classi personalizzate) con blocktheme
Entambi con dei div che ne formattano il testo a seconda dell'immagine
In quello di dx ho utilizzato nel div principale il Double Background e per il titolo in verticale la tecnica css
word-wrap: break-word.
Non ho ancora trovato il modo, in verticale, di utilizzare il "word-spacing", cioè separare le parole una dall'altra come avviene in orizzontale..ma prima o poi ci riuscirò.
E adesso via con il multi-column...e chi mi ferma più ??? :-)
Grazie ancora a tutti.
E.