Поддержка Проблемы и решения Разбить блок вывода последних записей

  • Как разбить блок вывода последних записей на две части. То есть на главной странице у меня есть два блока. Мне надо вывести в первый блок 2е записи, а потом во второй еще две записи.

    Как разбить этот цикл:

    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    <h1><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h1>
      <?php the_content('Далее');?>
      <?php endwhile; else: ?>
      <?php endif; ?>

Просмотр 12 ответов — с 1 по 12 (всего 12)
  • Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Нужно что-то показать между ними, или именно вывести в разных местах?

    Дизайн просто не позволяет их вывести сразу все. А между ними будет блок рекламы (но даже если бы его не было, все равно нужно делать разделение). Надо сначала вывести записи 1 и 2, потом реклама, потом 3 и 4. Разделения по категориям нету. Просто последние записи.

    Модератор Yuri

    (@yube)

    Внутри Цикла перед endwhile что-то типа

    <?php if($i++==1): ?>
    реклама
    <?php endif; ?>

    а остальные 2е записи? Можно подробнее. Проблема та не в том чтобы рекламу вставить.

    Модератор Yuri

    (@yube)

    Остальные после рекламы. Это простой и легкий способ.

    Если простой не подходит, то можно сделать два цикла

    1.
    <?php query_posts('showposts=2'); if (have_posts()) : while (have_posts()) : the_post(); ?>
    <h1><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h1>
      <?php the_content('Далее');?>
      <?php endwhile; endif; ?>
    
    2.
    <?php query_posts('showposts=2&offset=2'); if (have_posts()) : while (have_posts()) : the_post(); ?>
    <h1><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h1>
      <?php the_content('Далее');?>
      <?php endwhile; endif; ?>

    Но это +2 запроса к базе на ровном месте.

    YuBe спасибо. Не знал про offset=2. Но пока у меня все равно не получилось, где то ошибка в коде, не работает. Не программист я, где то накосячил.

    А простой способ я не понял, это вот так:

    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    <h1><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h1>
      <?php the_content('Далее');?>
    <?php if($i++==1): ?>
    тут допустим блок рекламы
      <?php endwhile; else: ?>
      <?php endif; ?>

    ?

    Сделал по второму способу. Но при таком раскладе не работает навигация (вперед назад). На старом форуме обсуждалась такая тема, что нужно добавь чтобы навигация заработала?

    Модератор Yuri

    (@yube)

    Типа так:
    query_posts($query_string.’&showposts=2′)
    query_posts($query_string.’&showposts=2&offset=2′)

    Модератор Yuri

    (@yube)

    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    <h1><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h1>
    <?php the_content('Далее');?>
    
    <?php if($i++==1): ?>
    реклама
    <?php endif; ?>
    
    <?php endwhile; else: ?>
    404
    <?php endif; ?>

    Навигация заработала, но так забавно. В общем, есть два блока по 2е записи, так вот в верхнем блоке записи по 2е перелистываются, а в нижнем блоке всегда одинаковые 2е записи. Как бы сделать общею навигацию?

    Модератор Yuri

    (@yube)

    Простота — залог здоровья (душевного).

    1.
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    <h2><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h2>
      <?php the_content('Дальше');?>
      <?php if ($i++ == 1) break; ?>
      <?php endwhile; endif; ?>
    
    2.
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    <h2><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h2>
      <?php the_content('Дальше');?>
      <?php endwhile; endif; ?>

    YuBe спасибо. Получилось)

Просмотр 12 ответов — с 1 по 12 (всего 12)
  • Тема «Разбить блок вывода последних записей» закрыта для новых ответов.