Home › Forum › Problemi Vari con WP › next previeos posts_link non funiziona.
-
AutorePost
-
-
11 Giugno 2008 alle 20:32 #6952gollum1Partecipante
Mi spiego meglio, sto continuando con il tema per il sito su cui sto lavorando, ho quasi ultimato la home.php che mi permette di vedere l’ultimo post della categoria news|eventi e sotto di questo in una barra laterale 10 post con shift di uno, in modo da eliminare quello già visualizzato in testa… quindi nella parte in basso ho eseguito una nuova query degli articoli, e faccio visualizzare gli ultimi dieci partendo dal secondo, ma con la possibilità di visualizzare anche quelli più vecchi… ecco il problema è proprio qui… non funzionano i due link per visualizzare i post più vecchi o più nuovi.
Viene generata una nuova pagina, ma gli articoli presenti nell’elenco sono sempre gli stessi…
in che cosa sto sbagliando?
qui il sito di prova, e qui il codice che ho usato per la barra dei riassunti…
Byez
—
Gollum1
-
12 Giugno 2008 alle 21:47 #54670gollum1Partecipante
credo che il problema sia nel codice che estrapola i post, mettendo l’offset=1 salto il primo post, e creo l’elenco dei post seguenti.
Purtroppo credo che quando viene riletta la pagina per generare i prossimi 10 post da visualizzare, probabilmente quella query produce ancora gli stessi 10 post… non riesco a capire come mai non shiftano come dovrebbero…
Byez
—
Gollum1
-
12 Giugno 2008 alle 22:00 #54671gollum1Partecipante
Ho pensato che il problema potesse essere anche qualcosa dovuto al fatto che come permalink uso /%postname% invece del solito…
ma anche reimpostando il valore di default la cosa non cambia… stranamente però non mi vengono interpretate correttamente alcuni css (praticamente la gestione dei tag < a>…
(forse per quello che su IE e su FF sotto winzoz il sito è diverso che con FF su linux, con il quale sto sviluppando? mannaggia… quando tutto sarà finito dovrò rivedermi tutti i css per adattarli anche ai vari browser su winzoz)
Byez
—
Gollum1
-
14 Giugno 2008 alle 21:52 #54746gollum1Partecipante
Aggiornamento:
Credo che il problema sia dovuto alla presenza di due loop che vengono modificati con query_post…
praticamente i link per i post più vecchi viene intercettato dal primo loop se metto nel query_post anche la $querystring. altrimenti viene semplicemente perso…
come pensate che possa fare per poterlo passare al secondo loop?
Byez
—
Gollum1
-
14 Giugno 2008 alle 22:11 #54747gollum1Partecipante
Quasi soluzione:
Il problema è dovuto a due fattori contemporanei, il non passaggio della query_string al secondo loop (è usato una query_tmp per saltare il primo loop), e la presenza del parametro offset=1, che dovrebbe permettere di non avere il primo post, purtroppo blocca tutto…
Devo trovare un altro modo per eliminare il primo post…
Questo però pone un altro problema, per eliminare il primo post dovrei usare il parametro showpost=11, e controllare se l’ID del post è uguale all’ID del primo post… ma nelle pagine successive, in cui questo non avviene, mi troverei con l’inserimento nella pagina di 11 post invece di 10…
perché non funziona come dovrebbe l’offset? eppure non mi pare di averne sbagliato l’interpretazione….
Byez
—
Gollum1
-
14 Giugno 2008 alle 23:05 #54748gollum1Partecipante
RISOLTO:
Posto la soluzione per chi fosse interessato…
1) per propagare la variabile $query_string al secondo loop:
Semplicemente copiarla in una variabile temporanea e poi ripristinarla alla fine del primo loop…
2) per il problema dell’offset:
Ho inserito alcune linee di codice per calcolare l’effettivo offset, quindi devo vedere se in $query_string esiste il parametro paged= che indica il fatto che sia in una pagina di articoli più vecchi.
se non esiste sono nella pagina degli articoli più nuovi, e l’offset è il solito 1, se invece esiste estrapolo l’effettivo numero di pagina e all’offset di 1 elemento sommo il numero di pagina moltiplicato per il numero di articoli per pagina, e sottraggo i primi 10 articoli.
più semplicemente, in codice:
$num_articoli=10;
$pos = strpos($query_string, "paged=");
if ($pos === FALSE){
$offset=1;
}
else {
$page = substr($query_string, $pos+6);
$pos = strpos($page, "&");
if ($pos === FALSE){
}
else {
$page = substr($query_string, 0, $pos);
}
$offset = 1+10*$page-$num_articoli;
}
query_posts($query_string.'&category_name=news&posts_per_page='.$num_articoli.'&offset='.$offset);
Spero di non avervi tediato troppo con questo mio monologo, ma scrivendo qui i diversi passi per trovare la soluzione mi sono schiarito comunque le idee per riuscire a trovarla in modo autonomo, spero con questo post di facilitare la vita a quelche altro WP-User...
Byez
--
Gollum1
-
-
AutorePost
- Devi essere connesso per rispondere a questo topic.