Простой счетчик php
Я работаю над WordPress query_posts. Я хочу показать 12 постов на главной странице,3 пункта подряд. Поэтому я хочу иметь CSS "clear:both" для первого элемента каждой строки. Как я могу сделать это, пожалуйста?
php query_posts (array ('showposts' => 9, 'post_parent' => $post->ID, 'post_type' => 'page', 'order' => 'ASC'));?>php if (have_posts ()): while (have_posts ()): the_post ();?>php the_title ();?> H2> php the_content ();?> DIV> php endif;?> DIV> php wp_reset_query ();?>
2 ответа
<?php query_posts(array('showposts' => 9, 'post_parent' => $post->ID, 'post_type' => 'page', 'order' => 'ASC')); ?>
<div>
<?php $i = 0; $attr = " class='clear_float'"; ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<div<?php if(($i++)%3 == 0) {echo $attr;} ?>> <!-- clear class on each 4th item -->
<h2><?php the_title(); ?></h2>
<?php the_content(); ?>
</div>
<?php endif; ?>
</div>
<?php wp_reset_query(); ?>
Я добавил 2 строки.
<?php $i = 0; $attr = " class='clear_float'"; ?>
а также
<div<?php if(($i++)%3 == 0) {echo $attr;} ?>> <!-- clear class on each 4th item -->
===== ОБНОВЛЕНО =====
Чтобы добавить третий класс предметов, я бы предложил добавить класс ко всем предметам, для простоты и еще большего контроля
Для этого перед циклом:
$i = 0;
Внутри div
в петле:
<div class="item-<?php echo (($i++) % 3) + 1 ?>">
Так что для каждой строки первый элемент имеет класс = item-1
3-й предмет имеет класс = item-3
<?php
$counter = 0;
if (have_posts() ....): the_post(); ?
$class = ((++$counter % 3) == 0) ? ' class="clearme"': '';
?>
<div<?php echo $class ?>> <!-- clear.... -->
...
Инициализируйте ваш счетчик равным нулю. Увеличьте его на единицу, разделите на 3 и проверьте, равен ли остаток 0 (подразумевается, что он даже кратен 3), и в этом случае вы устанавливаете свой класс / стиль очистки. В менее кратком коде:
$counter = $counter + 1;
if ($counter > 3) {
$counter = 0;
}
$remainder = (int)($counter / 3)
if ($remainder == 1) {
// will be 1 when $counter is 3
$class = ' class="clearme"';
} else {
$class = '';
}