Ugrás a tartalomhoz


Multiloop vs. lapozás


14 válasz erre a témára

#1 Balou

    Veterán

  • Regisztrált tag
  • PipaPipaPipaPipaPipa
  • 573 Hozzászólás:
  • Település:Budapest

Elküldve: 2010-02-04 - 23:34 PM

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:
<div id="container">
    

            <!--FIRST LOOP: display posts 1 thru 5-->
<div id="latest_news"> 
<?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 { ?>
<ul>
<li>
<h1 class="title"><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h1>
<p id="meta"><?php the_time(__('Y F j.')) ?></p>
<a href="<?php the_permalink() ?>"><img src="<?php bloginfo('template_directory'); ?>/timthumb.php?src=<?php echo get_post_meta($post->ID, "Thumbnail", true); ?>&h=100&w=100&zc=1" alt="" class="newer_image" /></a>
<?php excerpt('50'); ?> <a href="<?php the_permalink() ?>">Tovább &raquo;</a>
</li>
</ul>

<?php $count1++; } ?>
<?php endforeach; ?>
</div>

        <div id="content">



<!--SECOND LOOP: display posts 6 thru 10 -->
<div id="elder_news">
<?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 { ?>

<h1 class="title"><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h1>
<p id="meta" class="meta"><?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') ); ?></p>
<a href="<?php the_permalink() ?>"><img src="<?php bloginfo('template_directory'); ?>/timthumb.php?src=<?php echo get_post_meta($post->ID, "Thumbnail", true); ?>&h=150&w=150&zc=1" alt="" class="older_image" /></a>
<?php excerpt('140'); ?>
<div id="contentbottominfo">
<span class="more"><a href="<?php the_permalink() ?>">Tovább a folytatáshoz &raquo;</a></span>
<span class="tags"><?php edit_post_link('Szerkeszt', '', ' | '); ?><?php the_tags('Címkék: ', ', ', ''); ?><span class="clear"></span></span>
</div>
<?php $count2++; } ?>
<?php endforeach; ?>

</div>



        </div><!-- #content -->
    </div><!-- #container -->

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...)
Saját oldalaim: Agymenes.hu | webground.hu

#2 hgrg

    WP Addikt

  • VIP tag
  • PipaPipaPipaPipaPipaPipaPipa
  • 2943 Hozzászólás:

Elküldve: 2010-02-05 - 00:00 AM

Balou: annyi loop-ot teszel be amennyit csak szeretnél, csak legyen mindegyik lezárva :D
Hgrg.Info | Segítség:Support.hgrg.info | WP fordítások

#3 Balou

    Veterán

  • Regisztrált tag
  • PipaPipaPipaPipaPipa
  • 573 Hozzászólás:
  • Település:Budapest

Elküldve: 2010-02-05 - 00:32 AM

Súgd mán meg, hogy szerinted hol nincs lezárva :P 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 :D ) é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...
Saját oldalaim: Agymenes.hu | webground.hu

#4 Török Zoltán

    WP bűvölő

  • Regisztrált tag
  • PipaPipaPipaPipaPipa
  • 613 Hozzászólás:

Elküldve: 2010-02-05 - 01:13 AM

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:

<?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

kis cégem, wordpress munkák | erettsegi.com
semmi sem romlik el magától....

#5 hgrg

    WP Addikt

  • VIP tag
  • PipaPipaPipaPipaPipaPipaPipa
  • 2943 Hozzászólás:

Elküldve: 2010-02-05 - 02:09 AM

uhh valóban erről elfeledkeztem.. pedig most raktam össze egy sablont..
Hgrg.Info | Segítség:Support.hgrg.info | WP fordítások

#6 DjZoNe

    Sötét WP Lovag

  • Adminisztrátor
  • 1511 Hozzászólás:
  • Település:Budapest / Magyarország

Elküldve: 2010-02-05 - 10:23 AM

Egyébként, ha az egyik query_posts helyett
$masikposztok = new WP_Query();
-vel oldod meg, akkor erre sincs szükség.

#7 Balou

    Veterán

  • Regisztrált tag
  • PipaPipaPipaPipaPipa
  • 573 Hozzászólás:
  • Település:Budapest

Elküldve: 2010-02-06 - 00:55 AM

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é).

<?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);
?>
<?php $masikposztok = get_posts('numberposts=5&offset=3'); foreach ($masikposztok as $post) : start_wp(); ?>
<?php static $count2 = 0; if ($count2 == "5") { break; } else { ?>

<h1 class="title"><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h1>
<p id="meta" class="meta"><?php the_time(__('Y F j.')) ?> | <?php printf(__('Posted in %s'), get_the_category_list(', ')); ?> | <?php comments_popup_link(__('Nincs hozzászólás'), __('1 hozzászólás'), __('% hozzászólás'), '', __('Nem lehet hozzászólni.') ); ?></p>
<a href="<?php the_permalink() ?>"><img src="<?php bloginfo('template_directory'); ?>/timthumb.php?src=<?php echo get_post_meta($post->ID, "Thumbnail", true); ?>&h=150&w=150&zc=1" alt="" class="older_image" /></a>
<?php excerpt('140'); ?>
<div id="contentbottominfo">
<span class="more"><a href="<?php the_permalink() ?>">Tovább a folytatáshoz &raquo;</a></span>
<span class="tags"><?php edit_post_link('Szerkeszt', '', ' | '); ?><?php the_tags('Címkék: ', ', ', ''); ?><span class="clear"></span></span>
</div>
<?php $count2++; } ?>
<?php $masikposztok = null; $masikposztok = $temp;?>
<?php endforeach; ?>

Vagy valamit nagyon rosszul értelmezek? :)
Saját oldalaim: Agymenes.hu | webground.hu

#8 DjZoNe

    Sötét WP Lovag

  • Adminisztrátor
  • 1511 Hozzászólás:
  • Település:Budapest / Magyarország

Elküldve: 2010-02-06 - 02:18 AM

Saját korábbi kódot mutatok.

<?php
  global $wp_query;
  
  rewind_posts();

  $query= 'cat=5&orderby=date&order=DESC&showposts=7';
  $akciok = new WP_Query($query);
  if ($akciok->have_posts()) : ?>

<?php while ($akciok->have_posts()) : $akciok->the_post(); ?>		

 Bla-bla-bla
    
<?php endwhile; ?>      
<?php endif; ?>      

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


#9 Balou

    Veterán

  • Regisztrált tag
  • PipaPipaPipaPipaPipa
  • 573 Hozzászólás:
  • Település:Budapest

Elküldve: 2010-02-06 - 15:42 PM

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 :D

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...)
Saját oldalaim: Agymenes.hu | webground.hu

#10 DjZoNe

    Sötét WP Lovag

  • Adminisztrátor
  • 1511 Hozzászólás:
  • Település:Budapest / Magyarország

Elküldve: 2010-02-06 - 16:41 PM

Na jó, ezt most már én is megnézem,
kezd érdekelni a probléma :D

#11 DjZoNe

    Sötét WP Lovag

  • Adminisztrátor
  • 1511 Hozzászólás:
  • Település:Budapest / Magyarország

Elküldve: 2010-02-06 - 17:07 PM

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.

Csatolt fájl:

  • Csatolt fájl  index.zip   1004 byte   5 Letöltések:


#12 Balou

    Veterán

  • Regisztrált tag
  • PipaPipaPipaPipaPipa
  • 573 Hozzászólás:
  • Település:Budapest

Elküldve: 2010-02-06 - 17:27 PM

Ezer hála :D Í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 :D 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?
Saját oldalaim: Agymenes.hu | webground.hu

#13 Balou

    Veterán

  • Regisztrált tag
  • PipaPipaPipaPipaPipa
  • 573 Hozzászólás:
  • Település:Budapest

Elküldve: 2010-02-08 - 22:15 PM

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 :D 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....
Saját oldalaim: Agymenes.hu | webground.hu

#14 DjZoNe

    Sötét WP Lovag

  • Adminisztrátor
  • 1511 Hozzászólás:
  • Település:Budapest / Magyarország

Elküldve: 2010-02-09 - 01:10 AM

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.

#15 Balou

    Veterán

  • Regisztrált tag
  • PipaPipaPipaPipaPipa
  • 573 Hozzászólás:
  • Település:Budapest

Elküldve: 2010-02-09 - 12:26 PM

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... :( Most már kezdem érteni, hogy miért van mindenhol csak úgy, hogy kategóriánkénti bontás... :S
Saját oldalaim: Agymenes.hu | webground.hu





1 felhasználó olvassa ezt a témát.

0 felhasználó, 1 vendég, 0 anonim felhasználó