Home › Forum › Plugin e temi di WP › Tema a quattro colonne
-
AutorePost
-
-
9 Aprile 2005 alle 10:08 #73ulyx451Partecipante
Salve, mi è capitato per le mani una richiesta per realizzare un blog per due autori che vogliono pubblicare contemponareamente e vedere visualizzati i post l’uno a finaco dell’altro. In pratica si tratterebbe di raddoppiare un tema a due colonne in modo che nella parte centrale compaiano le due colonne dei post dei due autori e ai lati le sidebar rispettive.
Tralasciando per un attimo il problema delle sidebar, come potrei risolvere quello dei post?
Ho pensato ad una cosa del genere:
Nella parte centrale replico i <div> che contengono i post, ma in testa metto la condizione <se l’autore è tizio stampa, sennò fermati>
mentre nell’altra <se l’autore è caio stampa, sennò fermati>
Avete qualche consiglio in merito? Si può fare? E’ già stato fatto? Esistono plug-in?
Grazie!
-
9 Aprile 2005 alle 16:21 #32327SteveAglAmministratore del forum
Si la cosa è fattibile direi, ti consiglio la lettura della pagina del wiki relativa al Il Loop dove viene spiegato come scorere i post poi ritornare all’inizio ed eseguire ulteriori scansioni, nel primo passaggio relativo alla prima div visualizzerai i post di un autore e nel secondo div quelli del secondo autore.
Più complesso forse avere sidebar separate, ma con un po’ di programmazione non dovrebbe essere impossibile, forse però una doppia sidebasr non è necessaria inq uanto anche le pagine tipo quelle di archivio possono avere due div con i relativi Loop.
Un layout a 4 colonne potrebbe poi risultare poco leggibile con risoluzioni 800×600
-
9 Aprile 2005 alle 17:12 #32328ulyx451Partecipante
Grazie per l’indicazione, in effetti la chiave sembra proprio là¬. Che tu sappia è mai stato fatto qualcosa del genere su wordpress? O nel caso dove potrei cercare?
Ancora grazie
-
9 Aprile 2005 alle 18:23 #32330ulyx451Partecipante
Dunque, qualche cosa sta venedo fuori. Sto usando il loop ma non credo funzioni. Ho replicato il div che contiene il loop mettendoli dentro un content generale. Adesso ho un div id=autore1 e un div id=autore2. Il codice è questo:
<!– questo è il contenitore grande –>
<div id=”content”>
<!– questa è la colonna di autore1 –>
<div id=”autore1″>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<?php the_date(”,'<h2 id=”date”>’,'</h2>’); ?>
<div>
<h3 class=”storytitle” id=”post-<?php the_ID(); ?>”>” rel=”bookmark”><?php the_title(); ?></h3>
<div class=”meta”><?php _e(“Filed under:”); ?> <?php the_category(‘,’) ?> — <?php the_author() ?> @ <?php the_time() ?> <?php edit_post_link(__(‘Edit This’)); ?></div>
<div class=”storycontent”>
<?php the_content(__(‘(more…)’)); ?>
</div>
<div class=”feedback”>
<?php wp_link_pages(); ?>
<?php comments_popup_link(__(‘Comments (0)’), __(‘Comments (1)’), __(‘Comments (%)’)); ?>
<?php if ( pings_open() ) : ?>
” rel=”trackback”><?php _e(‘TrackBack’); ?>
<?php endif; ?>
</div>
<!–
<?php trackback_rdf(); ?>
–>
</div>
<?php comments_template(); // Get wp-comments.php template ?>
<?php endwhile; else: ?>
<?php _e(‘autore1, nessun post!’); ?>
<?php endif; ?>
<!– questa è la colonna di autore2 –>
<div id=”autore2″>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<!– Apre il controllo if. –>
<?php if ( !(the_author(‘autore2’)) ) { ?>
<?php the_date(”,'<h2 id=”date”>’,'</h2>’); ?>
<div>
<h3 class=”storytitle” id=”post-<?php the_ID(); ?>”>” rel=”bookmark”><?php the_title(); ?></h3>
<div class=”meta”><?php _e(“Filed under:”); ?> <?php the_category(‘,’) ?> — <?php the_author() ?> @ <?php the_time() ?> <?php edit_post_link(__(‘Edit This’)); ?></div>
<div class=”storycontent”>
<?php the_content(__(‘(more…)’)); ?>
</div>
<div class=”feedback”>
<?php wp_link_pages(); ?>
<?php comments_popup_link(__(‘Comments (0)’), __(‘Comments (1)’), __(‘Comments (%)’)); ?>
<?php if ( pings_open() ) : ?>
” rel=”trackback”><?php _e(‘TrackBack’); ?>
<?php endif; ?>
</div>
<!–
<?php trackback_rdf(); ?>
–>
</div>
</div>
<?php comments_template(); // Get wp-comments.php template ?>
<?php } ?> <!– Chiude il controllo if. –>
<?php endwhile; else: ?>
<?php _e(‘autore2, nessun post!’); ?>
<?php endif; ?>
Nel div di autore1 compaiono tutti i messaggi, senza distinzioni di autore, mentre nel div di auore2 dovrebbero comparire solo i suoi, invece compare “autore2, nessun post!”.
Dove sbaglio? Non devo richiamare the_author(‘autore2’) per stampare solo quelli?
-
10 Aprile 2005 alle 14:34 #32338SteveAglAmministratore del forum
Non potrà mai funzionare: la funzione the_author la interpreti in maniera sbagliata non devi mettere il nome dell’autore quindi non selezioni nulla e quindi vedi ovviamente tutto, nel secondo la condizione mi pare sbagliata.
Dovresti avere una struttura del tipo:
<div autore1>
<?php while (have_posts()) : the_post(); ?>
<?php if ( the_author(nickname,0) = “autore1” ): ?>
stampo l’articolo con tutto il PHP e HTML che serve
<?php endif; ?>
<?php endwhile; ?>
</div>
<div autore2>
<?php rewind_posts(); ?>
<?php while (have_posts()) : the_post(); ?>
<?php if ( the_author(nickname,0) = “autore2” ): ?>
stampo l’articolo con tutto il PHP e HTML che serve
<?php endif; ?>
<?php endwhile; ?>
</div>
NOnn l’ho provato ma non dovrebbe essere sbagliato in pratica fai il loop, verifichi che l’articolo che stampi nel primo div appartenga a autore1 poi nel secondo div riavvolgi in contatore a zero e ripeti il ciclo verificando che l’articolo appartenga stavolta ad autore2.
Ti suggersco di lavorre con una pagina molto semplice e nn sul tema originale, poche div, poca grfica etc etc solo il codice essenziale, quando funziona lo riporti nel tema che stai realizzando.
Dovrebbe esser posibile anche usare la funzione query_posts ma non è ancora documentata sul codex e nemmeno su wiki italy.
-
11 Aprile 2005 alle 9:06 #32346ulyx451Partecipante
Steve grazie mille per la correzione, ma non va. Mi da errore:
Fatal error: Can’t use function return value in write context in H:xampplitehtdocswp15wp-contentthemesblue-radiantindex.php on line 15
-
11 Aprile 2005 alle 9:30 #32347SteveAglAmministratore del forum
e la line 15 cosa contiene?
-
11 Aprile 2005 alle 9:45 #32349ulyx451Partecipante
Zio budda che testone!
14 <?php while (have_posts()) : the_post(); ?>
15 <?php if ( the_author(nickname,0) = “renata” ): ?>
-
11 Aprile 2005 alle 9:47 #32350ulyx451Partecipante
ovviamente autore1 è renata, e ci sono un paio di post di test già pubblicati
-
11 Aprile 2005 alle 10:04 #32351SteveAglAmministratore del forum
opps… certo che da errore clpa mia..
Cosଠforse è meglio:
<?php if ( the_author(nickname,FALSE) == “renata” ): ?>
Attenzione che renata deve essere il nick dell’autore.
-
11 Aprile 2005 alle 10:11 #32353ulyx451Partecipante
Infatti va avanti, processa tutto e si riferma a riga 46 con questo errore:
Parse error: syntax error, unexpected T_ENDWHILE in H:xampplitehtdocswp15wp-contentthemesblue-radiantindex.php on line 46
46 <?php endwhile; else: ?>
47 <?php _e(‘Renata, nessun post!’); ?>
48 <?php endif; ?>
Alla fine raccolgo questi post e faccio un how-to!
-
11 Aprile 2005 alle 10:24 #32354SteveAglAmministratore del forum
Ovvio chiudi il ciclo while prima dell’if:
46 <?php endif; ?>
47 <?php endwhile; else: ?>
48 <?php _e(‘Renata, nessun post!’); ?>
Cosଠdovrebbe andare se sbaglia ancora opsta tutto il codice compreso fra l’inizio e la fine del primo loop
-
11 Aprile 2005 alle 10:29 #32355ulyx451Partecipante
Parse error: syntax error, unexpected T_ELSE in H:xampplitehtdocswp15wp-contentthemesblue-radiantindex.php on line 47
<!– questa è la colonna di renata –>
<div id=”renata”>
<?php while (have_posts()) : the_post(); ?>
<?php if ( the_author(nickname,FALSE) == “renata” ): ?>
<?php the_date(”,'<h2 id=”date”>’,'</h2>’); ?>
<div>
<h3 class=”storytitle” id=”post-<?php the_ID(); ?>”>” rel=”bookmark”><?php the_title(); ?></h3>
<div class=”meta”><?php _e(“Filed under:”); ?> <?php the_category(‘,’) ?> — <?php the_author() ?> @ <?php the_time() ?> <?php edit_post_link(__(‘Edit This’)); ?></div>
<div class=”storycontent”>
<?php the_content(__(‘(more…)’)); ?>
</div>
<div class=”feedback”>
<?php wp_link_pages(); ?>
<?php comments_popup_link(__(‘Comments (0)’), __(‘Comments (1)’), __(‘Comments (%)’)); ?>
<?php if ( pings_open() ) : ?>
” rel=”trackback”><?php _e(‘TrackBack’); ?>
<?php endif; ?>
</div>
<!–
<?php trackback_rdf(); ?>
–>
</div>
<?php comments_template(); // Get wp-comments.php template ?>
<?php endif; ?>
<!– linea 47 –><?php endwhile; else: ?>
<?php _e(‘Renata, nessun post!’); ?>
<!– questa è la colonna di autore2 –>
sob
-
11 Aprile 2005 alle 10:41 #32356SteveAglAmministratore del forum
Allora facciamo per semplificare che lavoriamo su un loop “base” senza troppe altre cose, poi le aggiungerai dopo.
Dobbiamo avere un loop per autore1 uno per auotre 2 nel tema originale c’e’ un
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
Poi sostituito con:
<?php while (have_posts()) : the_post(); ?>
Ma è rimasto else in
<?php endwhile; else: ?>
Il tutto deve diventare:
<!– questa è la colonna di renata –>
<div id=”renata”>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<?php if ( the_author(nickname,FALSE) == “renata” ): ?>
<?php the_date(”,'<h2 id=”date”>’,'</h2>’); ?>
<div>
<h3 class=”storytitle” id=”post-<?php the_ID(); ?>”>” rel=”bookmark”><?php the_title(); ?></h3>
<div class=”meta”><?php _e(“Filed under:”); ?> <?php the_category(‘,’) ?> — <?php the_author() ?> @ <?php the_time() ?> <?php edit_post_link(__(‘Edit This’)); ?></div>
<div class=”storycontent”>
<?php the_content(__(‘(more…)’)); ?>
</div>
<div class=”feedback”>
<?php wp_link_pages(); ?>
<?php comments_popup_link(__(‘Comments (0)’), __(‘Comments (1)’), __(‘Comments (%)’)); ?>
“>Permalink
<?php if ( pings_open() ) : ?>
” rel=”trackback”><?php _e(‘TrackBack’); ?>
<?php endif; ?>
</div>
<!–
<?php trackback_rdf(); ?>
–>
</div>
<?php comments_template(); // Get wp-comments.php template ?>
<?php endif; ?>
<?php endwhile; else: ?>
<?php _e(‘Renata, nessun post!’); ?>
<?php endif; ?>
<!– questa è la colonna di autore2 –>
Ho indentato il codice per renderlo leggibile.
-
11 Aprile 2005 alle 10:42 #32357SteveAglAmministratore del forum
indentatura persa … vabbe
-
11 Aprile 2005 alle 10:52 #32358ulyx451Partecipante
Ti ho mandato una mail!
Ciao
-
11 Aprile 2005 alle 11:01 #32359SteveAglAmministratore del forum
che contine il codice vecchio.. io ho risposto qui, il mio codice va ?
-
11 Aprile 2005 alle 11:53 #32360ulyx451Partecipante
si scusa, ti avevo risposto non avendo visto il tuo ultimo codice. Allora, va benone, il loop funziona. Ti ringrazio.
Il punto è questo: nella prima colonna compaiono i post di solo renata ma alla fine mi stampa comunque il “Consuelo, nessun post!” Nella seconda colonna, che avevo provato prima di modificare il loop e che stampava bene (avevo sistemato un pò il css) non stampa nulla, nemmeno il “Consuelo, nessun post!”.
-
11 Aprile 2005 alle 12:02 #32361SteveAglAmministratore del forum
Perchè probabilmente non “riavvolgi” il loop, la seconda div sara IDENTICA alla prima con le seguenti modifiche
1) dove scrivi renata scriverai consuele, sia nei testi che negli if
2) prima di avviare il loop deifarne il rewind quindi il codice dovrebbe essere:
<div id=”consuelo”>
<?php rewind_posts(); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
Ripeto che forse sarebbe il caso dil avorare col codice più snello, con all’interno dei loop solo ad es. solo la riga:
<?php rewind_posts(); ?>
cosiଠil codice è snello faciel da verificare nel funzionamento.
POI ci si preoccuperà di rasferirci date ore, autori titoli etc etc e poi si penserà all’eventuale problema di impaginazione.
Provare a modificare tutto saltando di palo in frasca, fa si ch poi scappino piccoli errori, che se uno è poco pratico di php, css e html poi scoprire rcichiedono più tempo.
-
11 Aprile 2005 alle 12:55 #32363ulyx451Partecipante
Si! Funziona tutto! Steve sei stao grande, davvero disponibile, anche perchè cosଠho capito il funzionamento! Bene bene, mantengo la promessa di fare un how-to e di sottoporlo alla tua attenzione
Ovviamente posterò anche il link al risultato finale, un buon inizio per queste due sorelle…. !! A presto
-
11 Aprile 2005 alle 13:12 #32364SteveAglAmministratore del forum
Contento di esserti stato utile…
Saluti
-
-
AutorePost
- Il topic ‘Tema a quattro colonne’ è chiuso a nuove risposte.