Multiloop vs. lapozás

Sziasztok!











Van egy aprócska gondom…az egyik oldalamnál két loop van, és nem hajlandó emiatt működni a wp pagenavi. Efrud oldalán találtam ugyan egy leírást,de az semmit se művelt vele, bármit próbáltunk… Valaki találkozott már ilyesmivel?











Ez a két loop:



Code:











<?php query_posts('showposts=3'); ?>

<?php $posts = get_posts('numberposts=3&offset=0'); foreach ($posts as $post) : start_wp(); ?>

<?php static $count1 = 0; if ($count1 == "5") { break; } else { ?>





<?php $count1++; } ?>

<?php endforeach; ?>

















<?php query_posts('showposts=5'); ?>

<?php $posts = get_posts('numberposts=5&offset=3'); foreach ($posts as $post) : start_wp(); ?>

<?php static $count2 = 0; if ($count2 == "5") { break; } else { ?>



<?php the_title(); ?>



<?php the_time(__('Y F j.', 'sandbox')) ?> | <?php printf(__('Posted in %s', 'sandbox'), get_the_category_list(', ')); ?> | <?php comments_popup_link(__('Nincs hozzászólás', 'kubrick'), __('1 hozzászólás', 'kubrick'), __('% hozzászólás', 'kubrick'), '', __('Nem lehet hozzászólni.', 'sandbox') ); ?>



&h=150&w=150&zc=1" alt="" class="older_image" />

<?php excerpt('140'); ?>



Tovább a folytatáshoz »

<?php edit_post_link('Szerkeszt', '', ' | '); ?><?php the_tags('Címkék: ', ', ', ''); ?>



<?php $count2++; } ?>

<?php endforeach; ?>





















A lapozás meg a footer.php-ban van... naív módon gondoltam, hogy hátha az a baja, de nem, bárhova raktam nem működött...A multiloop-os dolgot pedig innen "lestem": Multiloop (írtam az emberkének mailt,mert lezárta a hozzászólási lehetőséget, de nem nagyon hiszem, hogy válaszolni fog egyhamar...)

Balou: annyi loop-ot teszel be amennyit csak szeretnél, csak legyen mindegyik lezárva :smiley:

Súgd mán meg, hogy szerinted hol nincs lezárva :stuck_out_tongue: Csak mert copy-paste a leírásból többek közt… plusz már Efruddal kitárgyaltuk a témát (spec így került ki belőle még 2 loop amit benne felejtettem :smiley: ) és ő nem szúrta ki,hogy nincs lezárva…(bár attól még nem találtunk megoldást). De azt tudjuk, hogy a query posts összeakad a lapozással…

  1. wp_reset_query(); kell a masodik loop ele




  2. a query_posts mukodik a lapozassal szepen pelda a wp codex query_posts topikjából:









Code:



<?php

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

$sticky=get_option('sticky_posts');

$args=array(

'cat'=>3,

'caller_get_posts'=>1,

'post__not_in' => $sticky,

'paged'=>$paged,

);

query_posts($args);

?>








3. showposts helyett mar posts_per_page van

uhh valóban erről elfeledkeztem… pedig most raktam össze egy sablont…

Egyébként, ha az egyik query_posts helyett



Code:

$masikposztok = new WP_Query();


-vel oldod meg, akkor erre sincs szükség.

Garantáltan, én vagyok a hülye…azóta átolvastam jónéhány leírást, az alapján jutottam el ide,ami alább látható. Így már “félnormálisan” lapoz (az urlben /page/2 esetén a navi is azt írja,hogy 2es oldalon van, de a tartalom az 1. oldalé).









Code:



<?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

$temp = $masikposztok;

$masikposztok= null;

$masikposztok = new WP_Query();

$masikposztok->query('showposts=5'.'&paged='.$paged);

?>







<a href="">



| |



<a href=""><img src="/timthumb.php?src=ID, "Thumbnail", true); ?>&h=150&w=150&zc=1" alt="" class="older_image" />





<a href="">Tovább a folytatáshoz »


















Vagy valamit nagyon rosszul értelmezek? :)

Saját korábbi kódot mutatok.









Code:

<?php

global $wp_query;



rewind_posts();



$query= 'cat=5&orderby=date&order=DESC&showposts=7';

$akciok = new WP_Query($query);

if ($akciok->have_posts()) : ?>



have_posts()) : $akciok->the_post(); ?>



Bla-bla-bla














Két dolog ami érdekes benne, ami hasznos lehet





    [*]rewind_posts(); - ha több loopod van, azt mondják kötelező ez.

    [*]$akciok = new WP_Query($query) - vagyis nem query()-t hívsz, hanem ezt inicializáláskor

    [/list]

Hm, bárhogy próbálom beüzemelni ezt a két trükköt,meg a kódodat, semmi előrelépés. Ráadásul eltűnt a “következő” linkem is a lapozásból :smiley:











Amikor 1:1ben átmásoltam a te kódodat, akkor se lapozott,csak nem szűrte ki az első 3 postot,hiába írtam azt a részt át…már arra is gondoltam,hogy a sandbox framework szivat, de a functions.php-ját teljesen kigyalultam, csak az maradt benne, ami nekem kell… Lehet este szétnézek gúgliban,hátha találok másik variánst a multiloop ilyen használatára (mert nekem ugye az kell, hogy először kiszedje az első 3 bejegyzést egymás mellé,majd listázza a következő 5öt alatta, de lapozásnál csak az 5ös lapozódjon…)

Na jó, ezt most már én is megnézem,





kezd érdekelni a probléma :smiley:

Alap WP 2.9.1, alap sablon, 0 bekapcsolt plugin.











Itt az index.php, amivel működik a dolog úgy, hogy mindig a kijelölt kategória első 3 posztját hozza fel, a többi pedig lapozódik.

Ezer hála :smiley: Így már tényleg működik a lapozás… még arra kell rájönnöm, hogy hogyan szűrjem ki, hogy a felső 3 bejegyzés alatta ne legyen ott :smiley: Mert nem kategóriánkénti szűrés kell…vagy működik ilyen esetben is valahogy az offset-es dolog csak rossz helyen próbáltam?

Hm, van valami ötletetek arra,hogy hogyan lehet nem kategória alapon kiszűrni bejegyzéseket a loop-ból?Konkrétan a legújabb 3 bejegyzést kiszűrni a 2. loop-ból…Úgy,hogy DjZoNe féle kód működőképes maradjon :smiley: 2 napja szenvedek, már átolvastam a Háború és Béke WP-fórum verzióját leírások után kutakodva,de semmi… mindenhol kategóriánkénti szűrés. Vagy a fentebbi multiloopos dolog, ami viszont nem működik…vagy egyszerűen rosszul kombinálom a kettőt…

A pagelés és az offset nem fog együtt menni, a kód szerint. (Amikor legutóbb néztem a parse_query-t aban volt egy if ág, ami a kettőt kizárja)











Annyit tudsz csinálni szerintem, hogy a parse_query -nél ráengedsz egy action-t, amiben kiválogatod az első 3 id-t. Ezt berakod a globális wp_query-be egy saját változóként, mit wp_query->kocsogokvagytokmind = array('440,441,442');











Aztán a posts_where hookban rákszűrsz, hogy ez a három ID ne legyen benne a query eredményébe, akkor ha az is_home() == true;











Erre ugye azért van szükség, mert a query_posts már azelőtt lefut, hogy a sablonod elkezdene megjelenni, ergó, mire te az első hármat ott leszűrod a wp_query->posts -ban már benne lesz az eredmény halmazod, a léptetnivaló posztokról.











Másik fontos még, hogy ha ez eddig megvan. Akkor, a sablonban, ahol a három leválogatós dolgot hívtuk, azt írd át úgy, hogy a new WP_Query() suppress_filters-el fusson, különben ott sem jelenik meg a fenti három id.

















Jobb ötletem nincs.

Azt hiszem túl nagy fába vágtam így a fejszémet :S Picit inkább átgondolom a dolgot, és lehet, 0ról újraépítem máshogy… :frowning: Most már kezdem érteni, hogy miért van mindenhol csak úgy, hogy kategóriánkénti bontás… :S