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
<?phpglobal $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 ;)
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
Visto qua?
http://drupal.org/node/361209
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?
ma quindi non esistono moduli appositi?
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
Ad esempio, il testo contenuto in una pagina potrebbe essere:
[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 ?
ragazzi ma alla fine qual'è il metodo per inserire questi blocchi in homepgae?
ho trovato questo:
http://drupal.org/node/58216
è vecchiotto: qualche esperto può verificare se fosse ancora "buono" per d6?
io non credo ma aspettiamo
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
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
ciao jerry, mi piacerebbe avere la colonna sinistra come nei 2 tuoi siti che hai postato.
puoi dirmi come poter inserire sia la sidebarleft che la sidebarright entrambe a sinistra?
grazie
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à ragazzi?
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 jscm sto cercando di modificare il node.tpl in modo da visualizzare i blocchi proprio come hai fatto tu credo!!
non ci riesco, puoi indicarmi che codice hai inserito nel node.tpl?
ti ringrazio!:)
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
spiega per bene cosa deve fare il modulo e vediamo dai..
non capisco, il codice funziona e credo che tu cercavi di visualizzare i blocchi in modo alternato coi nodi, non capisco cosa cè che non va
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
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>';
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
ciao jerry volevo chiederti come hai fatto ad implementare admanager sul tuo sito in drupal che io non ci riesco proprio!
Non è difficile.
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.
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à.
ok ti credo e mi fido, userò il modulo.
ma una volta creati gli adslot nel modulo devo copiare solo i 2 codici che mi dice di copiare nel sito giusto?
cioè in admanagr una volta creati gli adslot non devo far piu nulla oltre che copiare solo i 2 blocchi di codici.
ma una volta creati gli adslot nel modulo devo copiare solo i 2 codici che mi dice di copiare nel sito giusto?
cioè in admanagr una volta creati gli adslot non devo far piu nulla oltre che copiare solo i 2 blocchi di codici.
Forse non sono stato chiaro..
... sul modulo devi SOLO scrivere uno sotto l'altro il nome degli AdSlot, cioè i nomi che su AdManager hai dato alle AREE di Advertising.
Tutto il codice html o altro... non ti serve!
Se dovevi inserire il codice html... allora a che ti serviva il Modulo???!!!
beh abituato con adsense che dovevi andare a inserire codici con questo non devi fare nulla di nulla!
ottimo!
ps conosci qualche tutorial sul funzionamento di admanager perchè non capisco come integrare i blocchi che ho creato con adsense in admanager.
ottimo!
ps conosci qualche tutorial sul funzionamento di admanager perchè non capisco come integrare i blocchi che ho creato con adsense in admanager.
Google AdManager è uno strumento molto potente la cui logica è quella di creare le AdSlots dove inserire le impressioni, le quali gestire dai Placements che praticamente sono coloro che gestiscono e direzionano le creatività verso gli AdSlots. Ai placements vengono associate le creatività introdotte all'interno delle Inline che vai a creare, il quale richiede proprio che tu associa ad ogni inline i placement che ti servono. Ogni Inline ha il suo set di creatività che tu inserisci e queste fanno tutte parte di un Order.
Cmq... trovi la GUIDA TUTORIAL in inglese direttamente in alto a destra della dashboard in inglese. Se invece usi la versione italiana (non sia mai)... non ti resta altro che seguire la guida che trovi li.
Google AdManager è potente e quando venne reso disponibile per chiunque... mi raccontarono quelli di Blogo.it che si fece festa e si stapparono le bottiglie.
Vuoi mettere la GRANDEZZA di poter avere un solo sistema per la gestione dell'advertising che intrega qualsia tipo programma di affiliazione e campagna, senza obbligarti a popolareil tuo html di un casino di codice distinto per circuito di affiliazione?!.
Google ammette solo 3 Blocchi di Advertising per pagina... se hai + di 3 aree... ricordati di disabilitare Adsense in quelle di troppo... altrimenti google ti banna.
Devo decidermi a riprendere in mano questa discussione.... e finire il lavoro x cui è stata creata!!!
saluti
jerry
Signori e Signori,
ho ripreso in mano questa discussione, al fine di completare il lavoro.
fino ad oggi si era lavorato con
$page == 0, adesso passiamo a lavorare nel caso di$page != 0, il che vuol dire nel caso in cui il nodo è aperto. In questo caso, l'intenzione è far apparire un regione in una posizione definita, cioè sotto al$contentdel nodo.Ecco il banalissimo codice AGGIUNTO in APPEND a quello che è stato qui già postato + volte.
<?php if ($page != 0):
if ( $block_post1 != NULL ) {
print '<h6 style="text-align: center">PUBBLICITÀ</h6>';
print $block_post1;
print '<h6 style="text-align: center">PUBBLICITÀ</h6>';
}
if ( $block_post2 != NULL ) {
print $block_post2;
}
endif; ?>
Questa soluzion funziona benissimo e mostra le regioni all'interno di un nodo. Però se nella stessa regione io voglio inserire + blocchi, mi trovo il problema delle righe H6 che qui mi stampano la parola PUBBLICITA'.
Come posso evitare l'obbligo di usare 2 regioni SOLO xkè non riesco ad inserire le stringhe pubblicità nei giusti blocchi, ma devo invece inserirle fuori dalla regione?
non so se hai notato alcuni siti fatti però con wordpress e joomla hanno la possibilità non so però se lo fanno tramite plug in o theming, di inserire blochi all'interno del content ad esempio a metà di un testo.
sarebbe una cosa interessante secondo me portarla su drupal
sarebbe una cosa interessante secondo me portarla su drupal
Se abiliti i token noti che questo ti fornisce gli strumenti per inserirli all'interno del Content. Il problema è che li devi inserire a mano. Quindi ci sarebbe realizzare un modo per automatizzare questa cosa. Evitando l'utilizzo delle regioni. In ogni caso, sei sempre obbligato ad inserire le stringhe >pubblicità< in altro modo.
L'utilizzo del token è di certo vantaggioso se si capisse come automatizzare la cosa creando dei parametri di impostazione.
Mentre Le regioni sono vantaggiose xkè puoi infilare dentro tutto quello che vuoi.
Ad esempio, il testo contenuto in una pagina potrebbe essere:
[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.
Questa via potrebbe essere praticabile, ma vale la pena praticarla se riesci ad automatizzare l'inserimntro del filtro [qui_ads]. Se questa operazione, resta manuale e non impostabile diventa un casino e quindi è meglio agire con le regioni.
Se mi dite come devi fare a far inserire automaticamente un filtro di Google Admanager (e ci sono), all'interno del content, spiegandomi anche come fare ad inserli nel bel mezzo dei paragrafi del testo del contet.... allora se ne può parlare
Signore e signori,
FTFY
[grammar nazi, lo so. Ma un incipit così dequalifica tutto il post!]
;)
Signore e signori,
FTFY
[grammar nazi, lo so. Ma un incipit così dequalifica tutto il post!]
;)
eehhh!... Bohz! Quante storie :-D ...
giusto adesso che la discussione può essere condiderata relativamente chiusa!!... :-D
guarda i risultati su
http://sanisapori.ejarvis.eu
http://snowblade.ejarvis.eu
sia in frontpage che all'interno dei post (qui l'ultima modifica).
Complimenti!
...ma non vedo gli ads...
oops! adblock.
;)
[salvato nei preferiti]
...ma non vedo gli ads...
oops! adblock.
;)
[salvato nei preferiti]
COME non li VEDI!!!!... io li vedo ovunque.. :-| Sono 9 in frontpage e 7 nei nodi.
Sono gestiti da Google AdManager, quindi se non li vedi è sicuramente xkè sei dietro a qualcosa che filtra javascript o iframe ... o bOH!
adblock, appunto.
Ma non ti preoccupare, siamo solo in 8,5 milioni ad usarlo.
Disattivando adblock gli ads si vedono eccome!
Ma non ti preoccupare, siamo solo in 8,5 milioni ad usarlo.
Disattivando adblock gli ads si vedono eccome!
8.5milioni, vuol dire che lo usano molte poche persone sul web... e sicuramente sono quasi tutte persone che operano nel settore :P
Che browser usi?
Se usi IE6 o IE7 ci troverai dei problemini.
Se usi Firefox o IE8 va tutto alla grande.
Tra l'altro considera anche che con Google AdManager si veicolano ache le comunicazioni temporanee... del tipo "è nato questo nuovo servizio", "abbiamo lanciato questo"... e così via. Se filtri tutto, filtri anche questi messaggi.
su FF 3.5.5 tutto ok (mamma mia quanta pubblicità!)
Per il resto, posso testare solo ie7 al momento e gli ads si vedono abbastanza bene, a parte che ci ha messo 20 minuti per caricare la pagina, ma questo non credo sia un problema tuo...
Su IE7 dovrebbe esserci un problema con il CSS per il dimensionamento del blocco di login in alto sinistra.
Beh!.. la pubblicità... questa è una società a fini commerciali... cioè si vende pubblicità.
Non conosco alcun grosso network che non abbia pubblicità o che non venda servizi. Crescere nella rete va anche di pari passo con i ritorni economici che essa può conferire. Se sei un publisher DEVI vendere advertising.
Se compri una rivista ...di certo quella non potrebbe esistere, e non potrebbe fornire servizi utili x cui l'hai comprata, se non ci fosse la pubblicità!
Io non uso windows e capita che ci siano delle imperfezioni non solo tra browser e browser ma anche nella combinazione browser + sistema operativo :D.
non molto tempo fa, ho passato una notte nel ridefinire e risistemare la parte css del blocco di login proprio xkè tra SO e Browser non era mai uguale, le modifiche hanno coinvolto tutte le aree dei FORM e tutti i pulsanti esistenti in tutto il sito.
Ho ottuno un grande miglioramento ed una piena risoluzione dei problemi.
E direi che non utilizzerò, praticamente + il dimensionamento di tipo "em" ... ma mi concentrerò sull'utilizzare quasi escusivamente il dimensionamento via "px" o "%".
usa font-size o padding o margin con "em"... incasina un sacco tra un browser ed un altro /SO e un altreo.
sarebbe una cosa interessante secondo me portarla su drupal
Se abiliti i token noti che questo ti fornisce gli strumenti per inserirli all'interno del Content. Il problema è che li devi inserire a mano. Quindi ci sarebbe realizzare un modo per automatizzare questa cosa. Evitando l'utilizzo delle regioni. In ogni caso, sei sempre obbligato ad inserire le stringhe >pubblicità< in altro modo.
L'utilizzo del token è di certo vantaggioso se si capisse come automatizzare la cosa creando dei parametri di impostazione.
Mentre Le regioni sono vantaggiose xkè puoi infilare dentro tutto quello che vuoi.
non capisco come fai coi token ad inserire un blocco all'interno del corpo testo?
esite un token per ogni blocco creato forse?
sarebbe una cosa interessante secondo me portarla su drupal
Se abiliti i token noti che questo ti fornisce gli strumenti per inserirli all'interno del Content. Il problema è che li devi inserire a mano. Quindi ci sarebbe realizzare un modo per automatizzare questa cosa. Evitando l'utilizzo delle regioni. In ogni caso, sei sempre obbligato ad inserire le stringhe >pubblicità< in altro modo.
L'utilizzo del token è di certo vantaggioso se si capisse come automatizzare la cosa creando dei parametri di impostazione.
Mentre Le regioni sono vantaggiose xkè puoi infilare dentro tutto quello che vuoi.
non capisco come fai coi token ad inserire un blocco all'interno del corpo testo?
esite un token per ogni blocco creato forse?
Non è una questione di blocchi.
Esempio: Se utilizzi il modulo FCKeditor ed il Modulo Google Admanager... nelle impostazioni di security di per un profilo di FCKeditor, questo ti consente di impostare l'utilizzo dei filtri di Google AdManage, quindi puoi inserire all'interno del testo che stai scrivendo il tag o token [google_ad:ad_slot] in cui al posto di ad_slot inserisci il nome di uno dei tanti AdSlot impostati su Google Admanager e inserite nella pagina settings del modulo.
tutto qui... i token sono molto utili!
Con il modulo Google AdManager puoi usare token, anche con quello di Adsense e sicuramente con tanti altri.
sarebbe una cosa interessante secondo me portarla su drupal
Se abiliti i token noti che questo ti fornisce gli strumenti per inserirli all'interno del Content. Il problema è che li devi inserire a mano. Quindi ci sarebbe realizzare un modo per automatizzare questa cosa. Evitando l'utilizzo delle regioni. In ogni caso, sei sempre obbligato ad inserire le stringhe >pubblicità< in altro modo.
L'utilizzo del token è di certo vantaggioso se si capisse come automatizzare la cosa creando dei parametri di impostazione.
Mentre Le regioni sono vantaggiose xkè puoi infilare dentro tutto quello che vuoi.
non capisco come fai coi token ad inserire un blocco all'interno del corpo testo?
esite un token per ogni blocco creato forse?
Non è una questione di blocchi.
Esempio: Se utilizzi il modulo FCKeditor ed il Modulo Google Admanager... nelle impostazioni di security di per un profilo di FCKeditor, questo ti consente di impostare l'utilizzo dei filtri di Google AdManage, quindi puoi inserire all'interno del testo che stai scrivendo il tag o token [google_ad:ad_slot] in cui al posto di ad_slot inserisci il nome di uno dei tanti AdSlot impostati su Google Admanager e inserite nella pagina settings del modulo.
tutto qui... i token sono molto utili!
Con il modulo Google AdManager puoi usare token, anche con quello di Adsense e sicuramente con tanti altri.
ah capito, beh ottima cosa che usa i token, se si automatizzasse pure sta cosa, cioè io scrivo solo il testo poi lui in automatico mi posiziona i blocchi ad dopo n righe di testo sarebbe il massimo!
Lieve aggiornamento al codice in node.tpl.php, a favore della traduzione delle stringhe in più lingue.
<?php
$Ad = t('ADVERTISING');
$AdString = '<h6 style="text-align: center">' . $Ad . '</h6>';
?>
<?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 $AdString . $block_pos2 . $AdString;
}
if ($num % 6 == 0 && $block_pos3 != NULL) {
print $AdString . $block_pos3 . $AdString;
}
if ($num % 8 == 0 && $block_pos4 != NULL) {
print $AdString . $block_pos4 . $AdString;
}
?>
</div>
<?php endif; ?>
<?php endif; ?>
<?php if ($page != 0):
print $AdString . $block_pos4 . $AdString;
print $block_post2;
?>
Saluti
jerry
Ok, devo intervenire, anche perchè Jerry è cosi vicino, ma cosi lontano...e non è colpa sua.
Mi pare che tutto ha iniziato bene: http://www.drupalitalia.org/node/7225#comment-21273 http://www.drupalitalia.org/node/7225#comment-21282 http://www.drupalitalia.org/node/7225#comment-21297
Il link dato (http://drupal.org/node/361209) parla di block, non blocks, quindi Jerry ha creato il codice giusto http://www.drupalitalia.org/node/7225#comment-21360
Poi le specifiche sono cambiati un pò, non più teasers interspersi con pubblicità, ma pubblicità dentro un nodo...per la quale anch'io sono in accordo con Pinolo http://www.drupalitalia.org/node/7225#comment-21802, ma poi siamo tornati 'sulla retta via' http://www.drupalitalia.org/node/7225#comment-22042
Dopo, durante lo sviluppo ci sono saltati fuori dei problemi http://www.drupalitalia.org/node/7225#comment-23302
Proprio come succede nella vita 'vera'!
E infine, è nato una prima bozza http://www.drupalitalia.org/node/7225#comment-26862 (ha anche chiesto aiuto, ma non l'ho ascoltato, scusa)
Purtroppo non ho tempo per il modulo richiesta http://www.drupalitalia.org/node/7225#comment-26900
Ma nel frattempo Jerry ha portato i primi risultati alla luce, yay. http://www.drupalitalia.org/node/7225#comment-27663
Comunque, mi sembra che non sta usando il pattern 4-ad-4-ad-4, nè 2-ad-2-ad-2-ad-2-ad-2, ma 2-ad-4-ad-2-ad-2, solo un pelino più complesso...
Vediamo se possiamo creare qualcosa un pò più semplice (avviso, non ho testato questo codice)...
In
template.php:function NOMETEMA_preprocess_node (&$vars) {
global $teaser_count, $ad_index;
$teaser_count = 0;
$ad_index = 0;
$ad_delimiter = '<h6 style="text-align: center">'. t('ADVERTISEMENT') .'</h6>';
foreach (array('block_pos2', 'block_pos3', 'block_pos4') as $region) {
$ad_blocks[] = $ad_delimiter . theme('blocks', $region) . $ad_delimiter;
}
$vars['ad_blocks'] = $ad_blocks;
$vars['ad_page_block'] = $ad_delimiter . theme('blocks', 'block_pos4') . $ad_delimiter;
return $vars;
}
Qui sto salvando la 'pubblicità' temata in un array indicizzato, chiamato
ad_blocks. In più aggiungo di già il testo sopra e sotto come Jerry ha messo nel precedente post (preferisco advertisement invece di advertising). E per buona misura, aggiungiamo la pubblicità per quando$pagee vero. Oh, anche i global vanno inizializzati (non essenziale, solo più 'corretto')...Bene, adesso arriviamo al template di node. Il link di Mavimo (http://api.drupal.org/api/drupal/modules--node--node.tpl.php/6), da l'elenco di tutti i variabile 'standard' per questo template. Vi faccio notare una cosa, oltre a
$pagec'è anche$teaser, ma dice solo che sono flags (cioè booleano, VERO o FALSO), e (credo) riciprocamente esclusivo (mutually exclusive), cioè se$pageè vero,$teasersarà falso, e viceversa.Allora, arriviamo al
node.tpl.php:<?php
// visualizzando il teaser (edit preview o view)
if ($teaser) {
global $teaser_count, $ad_index;
$teaser_count++;
// dopo ogni due teaser, ma non dopo il quarto, nè dopo il decimo (cioè l'ultimo)
if (($teaser_count % 2) == 0 && $teaser_count != 4 && $teaser_count != 10) {
print '<div>';
print $ad_blocks[$ad_index++];
print '</div>';
}
}
// visualizzando tutto (solo page)
if ($page && arg(2) != 'edit') { // durante l'editing l'URL è node/xxx/edit
print $ad_page_block;
// print $block_post2; // da dove salta fuori questo variabile?
}
?>
Da notare che ho 'smussato gli angoli' togliendo i test di NULL per gli elementi di pubblicità, per il semplice motivo che presumo che il codice nel
NOMETEMA_preprocess_nodefa il suo lavoro, ma anche perchè non fa danni, scriverebbe<div></div>e basta...Nel preview (antiprima) quando editando il nodo, apparirà
$ad_page_block, e non ho idea qual'è il variable che dice che siamo in 'edit mode'...[Modified]Scoperto: http://www.drupalitalia.org/node/8925, quindi aggiunto...[/Modified]Non ho capito però da dove salta fuori
$block_post2, comunque basta togliere il//iniziale nel commento...HTW (hope that works)
John
Più imparo, più dubito.
uhmmm!... Figoo!... mi hai aperto gli occhi su alcune cose che non sapevo. dettagli molto interessanti.
In ogni caso, ho provato il codice e risulta che la parte in cui opera con i "teaser" non funziona, mentre l'altra parte che opera con $page invece funziona.
block_post2 è una regione aggiunta x via della necessità di inserire all'interno del nodo aperto altri blocchi oltre l'advertising. Questo perchè devo inserire la scritta ADVERTISEMENT sopra e sotto block_pos4.
Chiaramente il codice su template.php non è proprio corretto per gestire l'area block_post2.
Che ne dici di portare questa discussione in avanti fino al completamento del lavoro, sistemando il codice a dovere?
saluti
jerry
ps: ma non potevi bussare alla mia porta 3 mesi fa?! ehehehe :-D ... mi sono sbattuto un casino per risolvere questo problema dell'Advertising. All'epoca non avevo alcuna idea di come risolverso, ho dovuto studiare un sacco e fare tanti tentativi per capire come renderlo funzionante, ci ho messo un sacco, avevo bisogno di studiare in merito.
x jscm, non so se jerry sei te! :)
ma sei anche appassionato di cucina? ho visto il blog! :)
Beh, sarebbe più figo se funzionasse...piccolo (ma forse importante) dettaglio.
Come al solito, cercavo di essere troppo intelligente...
function NOMETEMA_preprocess_node(&$vars) {
global $teaser_count, $ad_index;
if (!isset($teaser_count)) { // azzera *solo* se non definito. Chi è che ha scritto 'sta roba? Oops, ero io...
$teaser_count = 0;
}
if (!isset($ad_index)) { // azzera *solo* se non definito. Errare humanum est, perseverare autem diabolicum.
$ad_index = 0;
}
$ad_delimiter = '<h6 style="text-align: center">'. t('ADVERTISEMENT') .'</h6>';
// richiesta solo quando visuallizzando i teaser
if ($vars['teaser']) {
foreach (array('block_pos2', 'block_pos3', 'block_pos4') as $region) {
$ad_blocks[] = $ad_delimiter . theme('blocks', $region) . $ad_delimiter;
}
$vars['ad_blocks'] = $ad_blocks;
}
// richiesta solo quando visuallizzando la pagina intera
if ($vars['page']) {
$vars['ad_page_block'] = $ad_delimiter . '<p>Page ad</p>' . $ad_delimiter;
}
return $vars;
}
Stava azzerando i globals ad ogni iterazione. Quindi aggiunto i
isset. In più ho aggiunto due test, cosi fa un pò meno lavoro quando non richiesta. Ancora non mi piace, ma il tempo stringe. Pazienza.Non c'ero. E se c'ero - dormivo. Comunque hai risposto alla tua stessa domanda. Consideralo un esercizio di 'studio'.
Rimane un ulteriore problema: Quando la lista è inferiore a 10, più specificamente 2 o 6, ci sarà un advertisement dopo l'ultimo teaser nella lista. Se conosco la lunghezza della lista, allora posso testare per questi 'edge case'. Ma non ho trovato quello che ceravo, forse troppo nebbia su internet oggi. Non c'è niente in
$vars, e non saprei dov'altro cercare. Se qualcuno lo sa, possiamo concludere in bellezza...John
Più imparo, più dubito.
ma sei anche appassionato di cucina? ho visto il blog! :)
Non sono un appassionato di cucina
Penso semmai al business!!
ah ma non sei tu che scrivi li allora, scusami
ciao non ho ben capito "scusatemi" quale dei 2 sistemi è migliore, se il primo o il secondo, potete spiegarmelo?
Il primo funziona e lo uso...
il secondo ho iniziato a testarlo... ma riprenderò i test quanto prima. Al momento sto lavorando su altro!
Ti direi utilizza il primo, poi quando il secondo sarà "up & running", passa al secondo :-).
il secondo funziona ma mi da qualche errore php ogni tanto devo vederee meglio cosa è che non va. il primo confermo che va.
riprendo questo post per capire assieme a voi una cosa che sto cercando di fare molto simile a questo ma un po piu granulare, nel caso apro un'altro post:
mi servirebbe inserire dei blocchi nel content di un nodo ogni tot righe di testo.
ad esempio solo nel full node e nel content, quindi nel corpo del nodo posso creare delle regioni ogni tot righe, ad esempio ogni 20 righe di testo mi visualizza un blocco.
Ti dico una cosa che va un pò "fuori tema"... ma che si riferisce ad un caso specifico.
Se devi inserire pubblicità da Adsense o da chi vuoi (tramite Google Admanager)... quel tuo problema viene risolto tramite Token. Di fatti il modulo Google Admanager o Adsense ti fa gestire la cosa inserendo un codice (token) all'interno del content.
non uso il modulo e comunque non si tratta di pubblicità ma di un blocco creato da me.
asdomar...se vuoi testare tu la soluzione 2 e migliorarla assieme a jhl.veron sarebbe una gran cosa, visto che io al momento non riesco xkè sono concentrato su altro al momento.