Вывод постов в две колонки в WordPress

31 Август, 2010

Недавно работал над парочкой проектов и мне поставили задачу чтобы посты в новостном блоге выводились в две колонки. Новостной блог был на wordpress и я начал думать как это сделать. Соответственно погуглил немного и решение нашлось само сабой. Оказывается это не так и сложно. Этим способом можно выводить посты и в три и в четыре колонки. Было бы желание и место, для вывода. Последнее время очень много порталов и блогов берут за основу технологию вывода постов в две колонки. Это удобно, читабельно и места больше становится. Сегодня мы с Вами реализуем эту идею.

Изначально в каждом блоге выводятся посты в таком порядке:

Мы реализуем следующую последовательность вывода постов:

Итак, для начала немного истории. Стандартный вывод постов задается с помощью цикла Loop, который имеет следующий код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!--Начало цикла Loop -->

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<div id="post-<?php the_ID(); ?>">
<h2><a href="<?php the_permalink() ?>"  title="<?php the_title(); ?>"><?php the_title(); ?></a></h2>
<?php the_time('F j, Y') ?> <!-- by <?php the_author() ?> -->
<div>
<?php the_content('Далее »'); ?>
</div>
<p><?php the_category(', ') ?> | <?php edit_post_link('Редактировать', '', ' | '); ?>
<?php comments_popup_link('Нет комментариев »', 'Один комментарий »', 'Комментариев: %'); ?></p>
</div>
<?php endwhile; else : ?>
<h2>Не найдено</h2>
<p>Здесь ничего нет, попробуйте поискать:</p>
<?php include (TEMPLATEPATH . "/searchform.php"); ?>
<?php endif; ?>

Мы будем модифицировать этот цикл под наши нужды. Что мы будем делать?

  1. Перед комментариями <!–Начало цикла Loop –> ставим следующий код: 
    1
    <?php $col = 1; ?>
  2. После начала цикла, на следующей строке вставляем 
    1
    <?php if ($col == 1) echo "<div class=\"row\">"; ?>
  3. Вместо
    1
    <div id="post-<?php the_ID(); ?>">

    пишем следующее

    1
    <div class="post col<?php echo $col;?>" id="post-<?php the_ID(); ?>">

    . Для чего меняем строку? Все просто. Мы добавляем возможные классы для будущих колонок. В нашем случае это col1 и col2, которые будут формироваться с помощью кода col<?php echo $col;?>.

  4. Перед окончанием цикла, а это строка 
    1
    <?php endwhile; else: ?>

    мы дописываем php код, который будет 

    1
    <?php if ($col == 1) echo "</div>"; (($col==1) ? $col=2 : $col=1); ?>
  5. Ну и конечно незабываем прописать в нашем файле стилей следующие правила для наших двух колонок: 
    1
    2
    3
    .row { clear: both; }
    .col1 { width: 250px; float: left;  }
    .col2 { width: 250px; float: right;  }

Вот в принципе и все. Вам осталось только разобраться и прикрутить все это к Вашему дизайну. Теперь наш цикл Loop будет выглядеть так(у каждого по своему, зависит от общего дизайна):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php $col = 1; ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<?php if ($col == 1) echo "<div class=\"row\">"; ?>
<div id="post-<?php the_ID(); ?>">
<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></h2>
<?php the_time('F j, Y') ?> <!-- by <?php the_author() ?> -->
<div>
<?php the_content('Далее »'); ?>
</div>
<p><?php the_category(', ') ?> | <?php edit_post_link('Редактировать', '', ' | '); ?>
<?php comments_popup_link('Нет комментариев »', 'Один комментарий »', 'Комментариев: %'); ?></p>
</div>
<?php if ($col == 1) echo "</div>"; (($col==1) ? $col=2 : $col=1); ?>
<?php endwhile; else : ?>
<h2>Не найдено</h2>
<p>Здесь ничего нет, попробуйте поискать:</p>
<?php include (TEMPLATEPATH . "/searchform.php"); ?>
<?php endif; ?>

У кого возникли какие-либо вопросы не стесняйтесь спрашивайте. Я пока еще не очень силен в WordPress и программировании на php, но мне будет очень интересно пообсуждать с Вами данную тему и находить новые решения. Удачи!


Если Вам понравилась статья и Вы хотите следить за обновлениями в блоге, то подписывайтесь через RSS, становитесь моим фолоувером в TWITTER. Возможно Вы желаете получать обновления себе на мыло? Подписуйтесь на RSS2E-mail. Так же, возможно, Вы хотите разместить постовые или любые другие виды рекламы. В таком случае пишите мне на ICQ:451240340

Источник: Sonika

Недавно нашел рецепт приготовления суши. Давно хотел сделать что-то своими руками. И вот, получилось.


На тему «Вывод постов в две колонки в WordPress» 24 комментариев:

Прямо в точку, классная статья. Обязательно попробую у себя на блоге. Интересно как это будет выглядеть, вдруг понравиться. Еще раз спасибо))

Серж | 31 Август 2010 в 13:20

Большое пожалуйста… Я вот только не пойму, вроде статья хорошая, и контент(кроме кода) уникальный, а комментов только 1 и не ретвитят никто(((

Masterix | 31 Август 2010 в 14:19

Спасибо автору за интересную статью, возьмем на заметку.

nemetc | 1 Сентябрь 2010 в 09:30

Да не за что =) Вот бы почаще идеи для статей появлялись…я бы жил на блоге =)

Masterix | 1 Сентябрь 2010 в 11:28

спасибо огромную за статью, случайно наткнулся, а вылилось всё в то, что на новом проекте переделал дизайн главной страницы и теперь анонсы выводятся в две колонки, единственно что изменил, так это параметры css, шаблон у меня растягивающийся, так что поставил вместо 250px 49% на каждый…
p.s. поле для комментария не имеет прокрутки..этот текст написан вслепую..

gualan | 1 Сентябрь 2010 в 12:20

p.s. странно, видимо словил глюк, сейчас полосы прокрутки нормально появляются…

gualan | 1 Сентябрь 2010 в 12:23

[...] This post was mentioned on Twitter by Anton Eremin, Alexander. Alexander said: RT @mrMasterix Вывод постов в две колонки в WordPress http://bit.ly/beeR2I [...]

>p.s. странно, видимо словил глюк, сейчас полосы прокрутки нормально появляются…

То у Вас наверно кеш не обносвился. Я еще в 10 утра поставил прокрутку =)

Masterix | 1 Сентябрь 2010 в 14:20

тогда всё понятно…я с утра на сайт к Вам зашел,переделал дизайн на своём сайте (так сказать по инструкции), а потом решил спасибо сказать =)

gualan | 1 Сентябрь 2010 в 15:10

Почаще бы так…Спасибо говорили =)

Masterix | 1 Сентябрь 2010 в 15:24

Дякую, якраз пинаю ВП в схожому напрямі, вивчити б його АПІ ))

Khlivnyuk | 3 Сентябрь 2010 в 00:10

А как сделать так, чтобы выводило три поста вместо двух???

Дима | 4 Ноябрь 2010 в 18:33

Почти аналогично. Дописать несколько функций. Я вскоре напишу об этом. Подпишитесь на РСС, чтобы не пропустить.

Masterix | 4 Ноябрь 2010 в 23:19

А как этот пример применить только для одной определенной категории, Ответьте пож-та

Сео-нуб | 20 Январь 2011 в 14:25

Подскажите, пожалуйста, как реализовать вывод постов в 4 колонки, очень необходимо!!! Заранее спасибо.

Сергей | 28 Октябрь 2011 в 14:41

Сейчас нет времени разбирать код, но как только оно найдется, займусь.
ЗЫ: Думаю там дело в ширине выводимого блока поста. Попробуйте сделать ширину так, чтобы сумарная ширина влазила в ваше место под вывод постов.

Masterix | 28 Октябрь 2011 в 15:25

обясните мне тупому куда вставить 5 пункт

Максим | 18 Ноябрь 2011 в 22:39

в файл стилей. К примеру, style.css

Masterix | 19 Ноябрь 2011 в 03:28

Срасибо ето я понял а куда именно
у меня тема Twenty Eleven

Максим | 19 Ноябрь 2011 в 16:03

Ну найди файл стилей и в любое место вставь.

Masterix | 20 Ноябрь 2011 в 11:32

У меня вот отличная тема Snow Summit, но цикл находится в файле loops.php, редактирую его, редактирую стили. И ничего… Посты как заколдованные прилипли…

Dmitry | 16 Январь 2012 в 12:39

а вы уверены, что именно этот файл отвечает за размещение постов? Возможно, сама функция главная может быть в файле function.php. Но это так, догадки, так как я не видел сам файл и код.

Masterix | 16 Январь 2012 в 16:16

по моему это тоже функция

кирилл | 2 Февраль 2012 в 22:36

Здравствуйте!
Спасибо за статью получилось! Но есть еще вопросик… Как сделать если 1-й пост на всю, 2, 3 пополам, 4-й на всю т.д. ???
Подскажите пожалуйста!
Спасибо!

Артем | 3 Февраль 2012 в 10:48
451-240-340 lyash89
mrmasterix@gmail.com id811932

PR-CY.ru