Inserire Blocchi che intervallino i Content della frontpage

94 contenuti / 0 new
Ultimo contenuto
Inserire Blocchi che intervallino i Content della frontpage

Buongiorno,
io vorrei che nella NORMALE FRONTPAGE ci fosse al possibilità di inserire blocchi che vadano ad intervallare i content, così come accade per esempio su http://autoblog.it e tutti i blog di Blogo.it

Mi spiego meglio. Io vorrei che su una frontpage che mostra 12post sia possibile inserire ogni 3 post un blocco di advertising.

Potete aiutarmi a fare questa cosa?

Ho già provato con il modulo Panel ma non è la soluzione adatta, perchè se vuoi passare alla pagina precedente, essendo le aree dei content delle viste, non carica tutta una pagina precedente ma semplicemente i content di quella vista. quindi se ho 3 viste di content e poi i blocchi di advertising, aggiunti tramite panel, mi ritrovo che devo caricare i content precedenti di tutte le viste. Non va bene!

Cerco una soluzione come quella utilizzata da Blogo.it nei suoi blog. Avete qualche idea?

Saluti
jerry

sto cercando di fare la stessa cosa anche io, almeno simile, vorrei riuscire a dividera le pagine con contenuti di diverso tipo.
Per esempio come su http://www.leggo.it/
il primo articolo in primo piano, poi 4 in una zona, i successivi 4 in un'altra zona ancora e così via, in pratica vorrei riuscire a dividere lo spazio dove escono gli articoli in più parti con la possibilità di avere impaginazioni diverse.

Ho provato anche io con panels ma non è la soluzione adatta.
Se trovo qualche cosa ti faccio sapere e se nel frattempo qualcuno ci aiuta prendo spunto.

cioa ciao

Avete esplorato le possibilità dei moduli Advertisement e Classified Ads?
http://drupal.org/project/ad
http://drupal.org/project/ed_classified

In alternativa, puoi modificare node.tpl.php, aggiungendo della logica per cui ogni n articoli visualizzati in home page, viene eseguito del codice che carica qualche annuncio.

Ciao, spiega meglio come modificheresti il file node.tpl.php.

Per quanto riguarda gli altri moduli che hai indicato.
l'unico modulo per l'advertising che ha senso usare è quello per incorporare Google Admanager, tutti gli altri no. Quindi la soluzione è più rivolta alla possibilità di inserire Blocchi all'interno della front page.

l'idea di modificare node.tpl.php può essere interessante ma dovresti spiegare di più.

In node.tpl.php (parto dal tema Garland) c'è già un controllo per sapere se sei in una pagina di elenco nodi:

<?php if ($page == 0): ?>
  <h2><a href="<?php print $node_url ?>" title="<?php print $title ?>"><?php print $title ?></a></h2>
<?php endif; ?>

All'interno del controllo devi inserire il $content e aggiungere poi un else per fare in modo che nei nodi completi non si duplichi il contenuto.
A questo punto, sempre all'interno del controllo, ti crei un contatore che aumenta di uno ad ogni nodo (la variabile deve essere global). Se vuoi far vedere un annuncio ogni 4 post, quando il contatore arriva a 4, mostri la pubblicità e azzeri il contatore.

ciao, la cosa si fa molto interessante..
C'è però una parte del tuo commento che non mi è ben chiara quella in cui dici inserisci nel controllo il $content e poi un else.
Riesci a farmi un esempio?

il file customizzato che uso io è questo:

<?php if ($page == 0): ?>
  <h2><a href="<?php print $node_url ?>" title="<?php print $title ?>"><?php print $title ?></a></h2>
<?php endif; ?>
  <?php if ($submitted): ?>
    <span class="submitted"><?php print t('!date — !username', array('!username' => theme('username', $node), '!date' => format_date($node->created))); ?></span>
  <?php endif; ?>
  <div class="content">
    <?php print $content ?>
  </div>
  <div class="clear-block clear">
    <div class="meta">
    <?php if ($taxonomy): ?>
      <div class="terms"><?php print $terms ?></div>
    <?php endif;?>
    </div>
    <?php if ($links): ?>
      <div class="links"><?php print $links; ?></div>
    <?php endif; ?>
  </div>

e come vedi presenta già un print $content... quindi volevo capire dove dovevo bene aggiungere il controllo che dicevi ed anche il contatore.

Scusami, ma mi sono caduto un po in confusione su quella parte del tuo commento.

grazie mille :)

Forse dell'else non hai bisogno, in quanto visualizzando il nodo singolo il contatore non arrivarà mai a 4 ;)

Prova con questo codice subito prima dell'h2

  <?php
 
global $contatore;
 
$contatore++;
  if (
$contatore % 4 == 0) {
   
// qui il codice per includere gli annunci, ogni 4 articoli
 
}
 
?>

PS - ricordati di usare il pulsante CODE quando metti del codice in un messaggio.

Non dovrebbe essere nemmeno necessario inserire e incrementare il contatore....

esiste $id ;)

Ciao
Marco
--
My blog
Working at @agavee

Ragazzi, direi che come suggerimento è molto interessante... e funziona.
Però mi si pone un nuovo problema :).

Se io uso un controllo del tipo ($id % 4 == 0)... mi ritrovo che mi colloca correttamente quello che voglio inserire per l'Advertising, però mi perdo un POST... cioè proprio quello per cui $id % 4 da 0.

ho la necessità di inserire TRA i post e non sostituendo quello divisibile per 4.

Suggerimenti?

Ho risolto in parte il problema, collocando il controllo proprio in fondo al file node.tpl.php.

in questo modo ottengo quello che voglio nella frontpage, però mi ritrovo che l'Advertising viene visualizzato anche in fondo al content del post, quando questo viene aperto. Questa cosa non va bene, ovviamente

Probabilmente quando vedi il singolo post, $id = 0, quindi 0/4 = 0. Basta che aggiungi il controllo per $id > 0 a quello del modulus, credo.
@mavimo a volte le cose ovvie ti sfuggono da sotto il naso... Ottima dritta!

Ragazzi io sono arrivato fino a qui... adesso però, credo proprio di aver bisogno di un aiutino o di un suggerimento.

Seguite il mio file node.tpl.php (ancora in lavorazione), la parte aggiunta si trova in fondo...

<?php phptemplate_comment_wrapper(NULL, $node->type); ?>
<div id="node-<?php print $node->nid; ?>" class="node<?php if ($sticky) { print ' sticky'; } ?><?php if (!$status) { print ' node-unpublished'; } ?><?php if ($page == 0) { print ' teaser'; } ?>">
<?php print $picture ?>
<?php if ($page == 0): ?>
  <h2><a href="<?php print $node_url ?>" title="<?php print $title ?>"><?php print $title ?></a></h2>
<?php endif; ?>
  <?php if ($submitted): ?>
    <span class="submitted"><?php print t('!date — !username', array('!username' => theme('username', $node), '!date' => format_date($node->created))); ?></span>
  <?php endif; ?>
  <div class="content">
    <?php print $content ?>
  </div>
  <div class="clear-block clear">
    <div class="meta">
    <?php if ($taxonomy): ?>
      <div class="terms"><?php print $terms ?></div>
    <?php endif;?>
    </div>
    <?php if ($links): ?>
      <div class="links"><?php print $links; ?></div>
    <?php endif; ?>
  </div>
</div>
<?php if ($page == 0): ?>
<?php
       
if ($id % 2 == 0 && $id != 4 && $id % 6 != 0 && $id % 8 != 0) {
           
$pos = 2;
        }
        if (
$id % 6 == 0) {
           
$pos = 3;
        }
        if (
$id % 8 == 0) {
           
$pos = 4;
        }
        if ((
$id % 2 == 0 && $id != 4 && $id % 6 != 0 && $id % 8 != 0) || ($id % 6 == 0) || ($id % 8 == 0)): ?>

<div id="node-<?php print $node->nid; ?>" class="<?php if (!$status) { print ' node-unpublished'; } ?><?php if ($page == 0) { print ' teaser'; } ?>">
<!-- <h6>PUBBLICITÀ</h6>
-->
<?php   print '<div id="block_pos'.$pos.'"></div>'?>
</div>
<?php endif; ?>
<?php endif; ?>

Il problema è che finchè io faccio un "print $pos", cioè della variabile che mi indicizza i blocchi consentendomi di visualizzare quello giusto... il suo contenuto mi viene mostrata a video.

Adesso io ho cercato di strutturare i blocchi nel modo corretto, cioè inserendo le regioni all'interno del file .info del tema... e all'interno del node.tpl.php io faccio visualizzare il blocco giusto in base al contenuto di $pos.

Quello che si trova dentro al ' dovrebbe essere gestito tramite la pagina dei blocchi e di fatti io vedo le regioni block_pos2, block_pos3 e block_pos4.

Purtroppo però, il contentuto della regione, impostato tramite la pagina dei blocchi, non lo trovo nella frontpage. Come mai? Cosa mi manca?.

Cortesemente mi date qualche dritta?
Siamo arrivati fino a qui... andiamo avanti :)

il problema è nell'ultima print, perchè FORSE drupal NON sostituisce la stringa tra apici se questa NON è nel file page.tpl.php.

Saluti

jerry

Ciao,
ho provato a seguire le informazioni del link che mi hai passato ma senza successo :|

ho modificato il mio node.tpl.php in questo modo, provando inizialmente con una sola regione la $block_pos2 e non con tutte.

<?php if ($page == 0): ?>
<?php
       
if (($id % 2 == 0 && $id != 4 && $id % 6 != 0 && $id % 8 != 0) || ($id % 6 == 0) || ($id % 8 == 0)):
   
?>

<div id="node-<?php print $node->nid; ?>" class="<?php if (!$status) { print ' node-unpublished'; } ?><?php if ($page == 0) { print ' teaser'; } ?>">
<h6>PUBBLICITÀ</h6>
<?php
               
if ($id % 2 == 0 && $id != 4 && $id % 6 != 0 && $id % 8 != 0) {
                    print
$block_pos2 . '2';
                }
                if (
$id % 6 == 0) {
                    print
$block_pos2 . '3';
               
3
               
if ($id % 8 == 0) {
                    print
$block_pos2 . '4';
                }
           
?>

</div>
<?php endif; ?>
<?php endif; ?>

Il risultato è che mi vengono stampati i numero 2, 3 e 4 (vedi le print) ma non mi viene stampato il contenuto di $block_pos2.

Nel file template.php ho aggiunto la fuzione

function NOMETEMA_preprocess_node (&$vars) {
foreach (array('block_pos2') as $region) {
$vars[$region] = theme('blocks', $region);
}
return $vars;
}

ho anche provato ad usare in template.php il seguente codice senza successo.

function NOMETEMA_preprocess_node(&$vars, $hook) {
  $vars['block_pos2'] = theme('blocks', 'block_pos2');
  $vars['block_pos3'] = theme('blocks', 'block_pos3');
  $vars['block_pos4'] = theme('blocks', 'block_pos4');
}

Ragazzi... BOOOHHH!!!...
... Non so che fare.
Altri suggerimenti?
Devo far in modo che funzioni.

saluti

jerry

Ma perché hai usato degli override in template.php? NOn hai definito le regioni nel file .info?

Certo che le ho definite nel file .info.
regioni block_pos2, block_pos3, block_pos4.

Ho usato anche il file template.php xkè nell'esempio che veniva fuori dal link che mi hai indicato, veniva fatto.

Se si può evitare di usare il template.php per un nometema_preprocess_node, lo preferei. Meglio funzioni generali e non per singolo tema (in questo caso).

Mi dici che devo eliminare la funzione del prepocess_node in template.php?
Ho qualche dubbio che possa funzionare, però proverò.

fai una prova anche tu, magari ti viene in mente qualche idea, visto che hai + esperienza di me in merito.

saluti

jerry

Ho appena provato con il codice del primo esempio (quello con foreach), su un tema che è semplicemente un subtema di Garland e ha funzionato perfettamente. In effetti, il codice in template.php è necessario per pasare le variabili delle regioni a node.tpl.php.

Hai resettato la cache e risalvato la selezione del tema?

Giusto. In effetti funziona anche a me, con questo codice per visualizzare le 3 regioni e non solo la block_pos2.

function NOMETEMA_preprocess_node (&$vars) {
foreach (array('block_pos2', 'block_pos3', 'block_pos4') as $region) {
$vars[$region] = theme('blocks', $region);
}
return $vars;
}

Però non è mica finita qui?! :P ....che fai nel caso in cui tu hai dei nodi creati, corrispondenti a quelli che vanno a pubblicare anche la regione aggiunta, ma che si trovano in stato di "unpublished"?

Il controllo viene fatto su $id, e se questo è divisibile per un altro numero scelto appositamente. Se lo specifico $Id non è pubblicato, ti ritrovi i posizionamenti dei nodi aventi i blocchi, non più dove te li aspetti.

dovrebbe bastare poter aggiungere un parametro di incremento, nel caso in cui il nodo sia unpublished.

NOTA: ho dimenticato una cosa importante.
Perchè bisogna usare per forza una funzione in template.php che abbia il nome del tema( function NOMETEMA_preprocess_node() ). Io preferirei che la funzione fosse generale e che agisse su tutti i temi, anche perchè io nel template.php inserisco anche le funzioni che richiamo all'interno di blocchi, in tutti i TEMI o SITI realizzati. praticamente io per i blog, parto da un tema di base, che poi ha molti file linkati in un altri temi usati da altri blog. il mio template.php è uno di questi file, quindi preferirei che fosse una funzione che non faccia riferimento al nome tema.

A me andava anche bene fare phptemplate_preprocess_node() ...così come c'è phptemplate_preprocess_page() .. però forse non si può.
Sapete darmi qualche suggerimento?

Se gli $id dei nodi non pubblicati saltano, allora torna a usare il contatore come da mie indicazioni iniziali.
Le funzioni in template.php sono sempre relative a un tema, per un semplice motivo: template.php si trova DENTRO un tema!
Dato che adesso è possibile creare subtemi in modo molto più flessibile, è opportuno che le funzioni all'interno di template.php abbiano il nome del tema (o subtema), altrimenti si rischiano errori con funzioni duplicate e conseguente fatal error di PHP.

C'è comunque un modo di manipolare il theme registry in modo "cross-theme": scrivere un modulo.
http://drupal.org/node/223430
E inserirvi dentro le funzioni di manipolazione.

Ho sostituito $id con un contatore global.
Per quanto riguarda i miei temi, questi sono tutti separati. Però succede, che io ho un tema di default che contiene tutti i file, con il design generale di tutti i blog. Poi, tutti gli altri temi sono directory con aventi all'interno molti link (x esempio un link al note.tpl.php del tema di riferimento e un link al file template.php del tema originario).

Ora se posso evitarlo, io vorrei non usare come nome di funzione NOMETEMA_preprocess_node(), perchè lo stesso file template.php è utilizzato per tutti i temi dei blog, raggiunto da ogni tema tramite un link.

Non ho ancora ben capito come sistemare questa ultima cosa, mal che va farò n funzioni uguali, una per ogni tema all'interno del template.php oppure in ogni tema farò uno specifico template.php che all'interno farò required() del template.php presente nel tema di default.

Ma tu, tra le altre cose, suggerisci di usare ZEN per i temi o di fare dei subdomain di garland (mai fatti finora). I temi usati per questi blog derivano tutti da garland come struttura.

Per i temi base non ho un suggerimento univoco. Ogni esigenza ha il suo strumento.
Per i temi molto personalizzati finora ho usato zen come base. Però ultimamente ho provato 960gs, con soddisfazione.

Per il phptemplate: se ho capito bene hai fatto una frittata di temi. Perché non usi i subtemi, invece di tutti queli link? Non ho mai provato, ma credo che il template.php del tema-radice dovrebbe propagarsi (se ha le funzioni con phptemplate) ai subtemi. Anzi, sono quasi sicuro di questo.

Non ho idea di come funzioni il discorso dei subtemi... :|.
Però vedrò di capirci qualcosa. L'ereditarietà mi serve... avendo diversi blog dal design di base comune. io per lo style.css ... faccio all'interno di ogni tema un @import del file style.css del tema di default... e poi customizzo quelle parti caratteristiche del blog specifico.

:D

ho provato in passato ZEN... ma non mi ci sono soffermato tantissimo.

Se scarichi zen e leggi il breve readme, scopri gran parte dei trucchi relativi ai subtemi.
Comunque c'è anche della ottima documentazione sull'handbook dedicato ai temi per D6 su drupal.org.

Da quello che dici, con una semplice implementazione di subtemi potresti evitarti molti link.

Domanda:- "Ma non esiste un modulo che faccia quanto indicato in questa discussione?".

Non sarebbe meglio avere le cose fatte in maniera pulita? :) ... e quindi a scanso di problemi legati ad aggiornamenti di versioni.

Saluti

jerry

Intendi la parte relativa agli ads che intervallano i nodi, oppure quella relativa ai subtemi?

Intendo la parte relativa agli ADS che si può generalizzare con un modulo che consenta di inserire dei blocchi all'interno dei nodi secondo gli stessi criteri indicati in questa discussione.

FORSE, si può studiare la cosa con CCK, aggiungi un area a cui poter associare blocchi con il metodo delle regions. Poi un controllo php all'interno che in base al $id o ad un contatore si può definire quando il blocco va visualizzato. é un ipotesi, ma non so se si può fare.

In ogni caso, un modulo apposito, sarebbe un idea, io non mi sono mai interessato della realizzazione di moduli.

Le potenzialità sono tante, ma ci vuole anche una preparazione adeguata.

Io lavoravo in Dada net e li Blog.it ha avuto da rinnovare tutto Splinder che al tempo era fatto con una vecchissima versione di Drupal. In Dada net, il team di Splider è, ai giorni nostri, veramente molto preparato su Drupal. Splinder adesso è tutto rinnovato.

Per inserire ads all'interno dei nodi credo basti creare un filtro che trasformi un segnaposto nella chiamata a un blocco.
Ma quello che volevi fare tu all'inizio era inserire un ad ogni tot voci in un elenco di nodi, no?

Ciao, quello che volevo fare io all'inizio era proprio quello di inserire un AD ogni tot di nodi.

Questo problema è stato risolto come hai visto, grazie al tuo aiuto.
Però si può pensare di generalizzare la cosa considerando la possibilità di inserire un blocco qualunque ogni tot nodi e se ci fosse un modulo o un sistema generale per farlo sarebbe molto meglio che scrivere codice a mano in node.tpl.php.

non ho capito cosa vuoi dire con: "filtro che trasformi un segnaposto nella chiamata a un blocco".

Saluti

jerry

jscm wrote:
non ho capito cosa vuoi dire con: "filtro che trasformi un segnaposto nella chiamata a un blocco".

Ad esempio, il testo contenuto in una pagina potrebbe essere:

Quote:
Vestibulum eu justo turpis, et mattis purus. Nulla rutrum, dolor vitae interdum hendrerit, justo metus semper est, sit amet faucibus est lectus et sem. Vivamus adipiscing arcu ut erat tincidunt vel consectetur lacus mattis. Etiam egestas tellus vel massa lacinia commodo.
[qui_ads]
Sed vehicula aliquam metus id lacinia. Nunc scelerisque luctus velit vel tincidunt. Pellentesque posuere odio vel massa facilisis sed sollicitudin libero sagittis. Nunc dolor ipsum, commodo ut gravida sed, sagittis a est.

Si può creare un modulo che crea un filtro di input; dopo averlo installato, vai ad aggiungerlo al formato di input che usi (ad es. FIltered HTML o Full HTML) e il filtro si occuperà a sostituire [qui_ads] con il codice per inserire un blocco contenente gli ad.

Ciao, mi si pone un nuovo dubbio in merito a questa parte legata ai blocchi da intervallare ai post della front page.

Se io apro un post, quindi mi ritrovo di fronte la pagina del post aperta e non la frontpage, quale variabile devo utilizzare per poter creare una condizione che mi mostri un'area blocchi solo quando il post è aperto?

Per la frontpage mi sono basato su $page == 0 e da qui ho fatto tutto, ogni n post, in frontpage il nodo mostra anche un blocco con l'advertising.

Per poter mostrare un blocco specifico solo all'interno di un nodo quando questo è aperto che variabile può essere usata da insere sempre in node.tpl.php?

Potrei benissimo inserire i miei blocchi nella regione content bottom e farli visualizzare solo quando i nodi sono aperti, ma io vorrei inserire il blocco prima dell'area dei commenti o nel form per inserire i commenti.

Avete qualche suggerimento?

Saluti

jerry

$page != 0 ?

ho trovato questo:
http://drupal.org/node/58216
è vecchiotto: qualche esperto può verificare se fosse ancora "buono" per d6?

Mah, di sicuro modificare il modulo node del core non è più una pratica consigliata...

si, ma si puo' sovrascrivere la funzione in template.php, o no?
qui c'è una soluzione per views (in particolare l'ultimo commento): http://drupal.org/node/536830

No, le funzioni sovrascrivibili in template.php sono quelle theme_

ah già!
mi era sfuggito quel piccolo particolare... :)

Ciao,
non ho ancora avuto tempo di provare l'utilizzo di region da inserire in blocchi visibili solo ell'interno dei nodi per cui page $!= 0. Proverò appena possibile.

Ti sottopongo però un altro problema, più o meno dello stesso tipo, che è legato a quanto col tuo aiuto si è sviluppato per introdurre blocchi tra i post della front page, quindi per $page == 0.

Dato che il codice si trova e lavora all'interno di node.tpl.php ... mi ritrovo che quando scrivo un post e voglio vedere l'anteprima, in fondo alla visione intera dell'antreprima del post mi viene visualizzato un blocco. Questo suggerisce che la pagina di anteprima ha $page == 0 e guarda caso il contatore impostato x i post è divisibile x 2 xkè la regione che mostra è sempre la stessa, la prima delle 3.

da un cero punto di vista: chi se ne frega.
da un altro punto di vista invece è imporante: se c'è una campagna venduta a cpm, questa cosa fa sprecare impression pagate dal cliente, quindi va risolta!!!

Che mi suggerisci?

Ho fatto qualche ricerca e il problema pare sussistere. Hai provato a usare devel per vedere le variabili disponibili quando sei in preview?
In alternativa, mi sembra di capire che Drupal metta "Preview" come titolo della pagina quando sei in anteprima, quindi forse puoi controllare quello con drupal_get_title e andare di conseguenza a nascondere i blocchi che non vuoi.

Ciao, ho provato la funzione drupal_get_title()
il risultato è che una

print drupal_get_title();

mi restituisce: Crea Blog entry

Cioè la pagina crea post, anche se fai l'anteprima, restituisce come tiolo Crea Blog entry.
Volendo può andare bene anche così, ma non mi pare la soluzione migliore, anche perchè il titolo, questo caso viene restituito già con il parsing della lingua avvenuto e questo non va proprio bene xkè il check sul titolo verrebbe fatto su tutti i blog con lo stesso codice, quindi sui blog non tradotti xkè in lingua inglese.

Ho provato ad usare Devel sul blog di test... praticamente mi restituisce informazioni dalle varie pagine.... ma restituisce proprio NULLA dalla pagina di anteprima del post, proprio non da alcuna informazione.. MAH!

Altri suggerimenti?

saluti

jerry

Su ragazzi, sfoggiate qualche altra idea :).. in merito a questo problemino.
Miglioriamo questo drupal in qualche modo...
... ho un casino di altre questioni da porvi sulla bilancia!!!

Pensiamo a risolvere questa intanto.

Avete idee?

Io sono molto propenso a seguire l'idea di Pinolo, xkè di certo è la più semplice ed efficace. Bisogna però trovare qualche altro parametro per un costrutto condizionale + corretto.

Forza ragazzi!!!! Voi sicuramente conoscete + parametri Drupal di quelli che conosco io.

Mi sa che l'altra soluzione possibile è contribuire con del codice alla issue che è collegata a questo problema su drupal.org

Ciao Pinolo, in questo momento non riesco a fare i test e ragionare su questa cosa, in quanto sono troppo preso al momento.

Riprenderò tra breve a cercare di risolvere questo problema.
I punti che ho da risolvere sono 2: uno è quello che già sai, cioè impedire che i blocchi vengano visualizzati nella pagina di edit e per ultimo inserire una nuova regione, utilizzabile SOLO quando un post è aperto per inserire all'interno, un altro blocco di pubblicità e spostare al suo interno anche il blocco degli "Articoli Simili".

Ovviamente se qualcuno ha idee che le posti pure.

In ogni caso, se vuoi vedere il risultato allo stato attuale, guarda i link seguenti.
http://sanisapori.ejarvis.eu
http://snowblade.ejarvis.eu

saluti

jerry

E' un problema che mi sono posto diversi mesi fa... non mi ricordo tutti gli eventuali accorigimenti funzionali.

è soltanto una questione di blocchi div. Un tema standand .. all'interno del div content-wrapper, ha i blocchi div sidebarleft, sidebarright e middle-wrapper (credo) che sono tutti con un bel >float< nel css.

se vuoi "imprigionare" siderarleft e sidebarright, basta che crei un blocco div chiamato come vuoi e soggetto al float: left (nel tuo caso) che racchiuda al suo interno i blocchi div sidebarleft e sidebaright.

Se vuoi vedere espressamente del codice ti suggerisco di utilizzare Firefox con l'add-on firebug e vedrai in maniera MOLTO chiara il css associato ai singoli blocchi, così da riprodurlo per le tue necessità.

Se vuoi discutere ancora di questo argomento, apri una nuova discussione, perchè questa, sebbene al momento sia in stand by (xkè ho altro a cui dedicarmi) è riservata ad un altro tipo di questione che presto verrà ripresa e dibattuta per nuove soluzioni.

Saluti

jerry

Ci sarebbe una soluzione che NON risolve ma aggira il problema della Regione visibile durante le Anteprime...
... per esempio quella di creare un tema specifico per l'amministrazione (x esempio stile wordpress) dove insere all'interno in apposite regioni, tutti i blocchi utili per l'amministrazione e non inserire i blocchi per l'Advertising con Google Admanager.

Non ho ancora provato, l'unico dubbio che ho è nell'anteprima, nel senso come si vedrà l'anteprima di un post relizzato all'interno di un tema specifico di amministrazione molto diverso da quello visualizzato?

Nota: In effetti Google si "Arrabbia" SE fai autoclic ma mi sa che si "Arrabbia" anche se fai troppe impressions da uno stesso IP in un dato arco di tempo, quindi se sei sempre con la pagina del tuo sito/blog aperto, consumando sempre impressions magari Google ti banna.

Novità quanto prima, ma purtroppo ancora non riesco a lavorarci su per risolvere l'ultima parte.

Ma lo farò xkè mi serve, appena avrò finito di risolvere altri problemi sui Feed Reader.

Se c'è qualcun'altro che volenteroso vuole contribuire a portare avanti questa discussione, io come tanti altri, ne saremmo felici.

Se poi si riuscisse a raggiungere competenze e abilità tali da creare un modulo apposito, sarebbe bellissimo :)

Ciao, customizza questo codice ottenuto grazie all'importantissima collaborazione di PINOLO.

node.tpl.php

<?php if ($page == 0): ?>
<?php
       
global $num;
       
$num++;
        if ((
$num % 2 == 0 && $num != 4 && $num % 6 != 0 && $num % 8 != 0 && $num % 10 != 0) || ($num % 6 == 0) || ($num % 8 == 0)):
   
?>

<div>
<?php
               
if ($num % 2 == 0 && $num != 4 && $num % 6 != 0 && $num % 8 != 0 && $num % 10 != 0 && $block_pos2 != NULL) {
                    print
$block_pos2;
                }
                if (
$num % 6 == 0 && $block_pos3 != NULL) {
                    print
$block_pos3;
                }
                if (
$num % 8 == 0 && $block_pos4 != NULL) {
                    print
$block_pos4;
                }
           
?>

</div>
<?php endif; ?>
<?php endif; ?>

template.php

function NOMETEMA_preprocess_node (&$vars) {
foreach (array('block_pos2', 'block_pos3', 'block_pos4') as $region) {
$vars[$region] = theme('blocks', $region);
}
return $vars;
}

Regioni da creare per il tema:
block_pos2
block_pos3
block_pos4

Il lavoro non è affatto concluso ma funziona BENISSIMO su DRUPAL 6.X

Questo accorgimento è una soluzione molto importante e utile.

Un messaggio a chiunque legge questo commento: SE AVETE le competenze per CREARE un modulo per drupal che apporti questa caratteristicha... FATEVI AVANTI!!!

Seppure semplice resta cmq un intervento che ha un importante riscontro sui siti di contenuti. Un modulo apposito è decisamente da prendere in considerazione. Sono aperto a discutere la cosa.

Io non sono uno sviluppatore professionista ed è la collaborazione il punto di forza di un buon progetto.

saluti

jerry

Le cose che questo modulo deve fare sono:

frontpage:
- collocare un certo numero di regioni all'interno tra i contenuti
- numero di regioni impostabile dall'utente
- intervalli in cui le regioni devono essere collocate impostabile dall'utente
- specificare se le regioni devo mostrare un testo (definito dall'utente) al top o al bottom della stessa (nel mio caso sarebbe la scritta pubblicità)

nodo:
- collocare una regione diversa dalle precedenti visibile solo quando il nodo è aperto e collocata in fondo al contet
- collocare una regione diversa dalle precedenti visibili solo quando ci sono commenti e collocata in mezzo ai commenti con un intervallo impostato dall'utente.
- specificare se le regioni devo mostrare un testo (definito dall'utente) al top o al bottom della stessa (nel mio caso sarebbe la scritta pubblicità)

Queste sono le cose che mi vengono in mente al momento.

Al momento sui blog funziona benissimo per la frontpage la soluzione adotta e qui postata, non ho lavorato sulla regione da mostrare in fondo al content e prima dei commenti e all'altra da mostrare in fondo o in mezzo ai commenti.

saluti

jerry

m-drupal se segui il codice alla lettera..

- devi prima creare a mano chiamate block_pos2, block_pos3, block_pos4 e così via
- inserire il codice li indicato, nella sua interezza, facendo attenzione alle chiusure - ?> - in fondo in node.tpl.php
- devi inserire nel file template.php la funzione chi ti ho indicato così com è sostituendo NOMETEMA con il nome del tema che stai utilizzando.
- fai un flush della cache

e dovresti vedere le regioni sotto al menu blocchi.
popoli queste nuove regioni e verifichi il funzionamento.

a me funziona... ed io ho un sacco di temi che usano questa soluzione.

saluti

jerry

youdrupal wrote:
ma per la scritta pubblitià vedo che hai risolto o sbaglio?

Beh!... al momento la cosa è risolta in maniera molto pratica, l'importante è che funzioni:

print '<h6 style="text-align: center">PUBBLICITÀ</h6>';
print $block_pos2;
print '<h6 style="text-align: center">PUBBLICITÀ</h6>';

Non è difficile.

  1. Creare gli Adslots su Google AdManager
  2. Installare il modulo Google Admanager per Drupal
  3. Inserire nell'ordine + logico e corretto possibile il nome intero di ogni singolo AdSlot dove viene specificato sotto /admin/settings/google_admanager
  4. Spostare i Blocchi nelle Regioni di Interesse

ATTENZIONE:
Il punto 3 è una parte delicata, nel senso che il modulo crea i blocchi drupal secono l'ordine cronologico con cui sono inseriti, se in un secondo momento cambi qualcosa in quell'ordine, non ti ritroverai con un blocco che scompare o che viene collocato altrove... ma il rispettivo blocco cambierà dimensioni a seconda delle dimensioni dell'AdSlot.

Quindi è bene scegliere con logica come scrivere uno sotto l'altro, i nomi degli adslot, nel l'interfaccia di amministrazione del modulo.

Se sposti il nome di un adslot da 468x60 sopra il nome di uno con dimensioni 160x600 ti ritroverai che li dove avevi collocato un adslot da 160x600 verrà msotrato quello da 468x60, quindi si incasina tutta la pagina.

drupal1italia wrote:
mamma che casino ma non posso usare i blocchi normalmente senza il modulo?

Di blocchi ne puoi usare quanto e quali vuoi... ma se vuoi usare Google AdManager per gestire l'Advertising direi che devi installare il modulo che a sua volta ti crea i blocchi appositi per ogni AdSlot che ti serve inserire.

Guarda che è di una semplicità estrema!
Senza modulo ti incasini esageratamente nell'inserire l'header per google ad manager.

Non crederai forse che Google Ad manager funzioni senza farti agire sul tuo sito?!... se ti metti a fare a mano le aggiunte sull'header, per l'AdManager, su un sito fatto con Drupal... direi che è inutile e d'altra parte anche laborioso.

Usa il modulo.... xkè è semplicissimo usarlo. L'unico accorgimento è di inserire i nuovi Adslot sempre sotto quelli che ci sono già.

Pagine