воскресенье, 29 ноября 2009 г.

10 полезных приемов и техник программирования Wordpress - #3 Альтернативная стилизация постов на главной странице

Альтернативная стилизация постов на главной странице

Проблема.

Много новых Wordpress-тем имеют поразительные возможности по отображению постов на главной странице. Например, можно отображать первые три поста несколько большими, чем остальные (с изображениями и расширенным текстом), а остальные посты показывать в более простом виде.

Существует множество тем, разработчики которых используют два различных цикла для достижения целей, указанных в примере. А это неправильно и может привести к нежелательным последствиям. Далее будем использовать более простой метод.

Решение.

Вот произвольный пользовательский цикл, который первые три поста отображает в немного более интересном виде, нежели остальные. Вы можете заменить стандартный цикл в файле index.php на этот:

<?php
$postnum = 0;
while (have_posts()) : the_post(); ?>

<?php if ($postnum <= 3){ ?>
<div <?php post_class() ?> id="post-<?php the_ID(); ?>">
<div class="date"><span><?php the_time('M j') ?></span></div>
<h2>(<?php echo $postnum;?>)<a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
<div class="post-image" style="text-align:center;">
<a href="<?php the_permalink() ?>"><img src="<?php bloginfo('template_directory' ); ?>/timthumb.php?src=<?php echo catch_that_image(); ?>&w=500&h=200&zc=1" alt="<?php the_title(); ?>" /></a>
</div>
<p><?php the_content('Read the rest of this entry »'); ?></p>
<p class="more"><a href="#">Read More</a></p>
</div>
</div>

<?php } else {
<div <?php post_class( 'single ' . $end ); ?> id="post-<?php the_ID(); ?>">
<div class="post-content">
<h3><a href="<?php the_permalink() ?>">(<?php echo $postnum; ?>)<?php the_title(); ?></a> <?php edit_post_link('_', '', ''); ?></h3>
<p><?php the_excerpt( '' ); ?></p>
<p class="more"><a href="#">Read More ?</a></p>
</div>
</div><!-- End post -->

<?php }
endwhile;
?>

Объяснение кода.

Тут нет ничего сложного. Мы просто создаем PHP-переменную $postnum. Если значение переменной $postnum меньше или равно 3, то выводим посты в более интересном виде. Если же значение $postnum больше 3, то посты выводятся в более компактном виде. Вот и все.