0

私は自分のカウンターを数えようとしています。次を使用して、表示されるすべての投稿にクラス名(偶数)を追加しようとしています:

<?php
        global $paged;
        global $post;
        $do_not_duplicate = array();
        $categories = get_the_category();
        $category = $categories[0];
        $cat_ID = $category->cat_ID;
        $myposts = get_posts('category='.$cat_ID.'&paged='.$paged);
        $do_not_duplicate[] = $post->ID;
        $c = 0;
        $c++;
        if( $c == 2) {
            $style = 'even animated fadeIn';
            $c = 0;
        }
        else $style='animated fadeIn';
        ?>

<?php foreach($myposts as $post) :?>
   // Posts outputted here
<?php endforeach; ?>

evenクラス名が出力されていません。出力される唯一のクラス名は、(ifステートメントのelse部分からの)animatedおよびFadeInクラスであり、現時点ですべての投稿に追加されます

4

3 に答える 3

1

モジュラス演算子をチェックしてください

また、偶数/奇数チェックを投稿ループに移動します。

<?php $i = 0; foreach($myposts as $post) :?>
    <div class="<?php echo $i % 2 ? 'even' : 'odd'; ?>">
        // Posts outputted here
    </div>
<?php $i++; endforeach; ?>
于 2013-03-18T15:41:40.473 に答える
0

問題は、else ステートメントでカウンターを 2 に戻さないことです。

if( $c == 2) {
  $style = 'even animated fadeIn';
  $c = 0;
} else {
  $style='animated fadeIn';
  $c = 2;
}

そうは言っても、他の人が言及したり、単に行うようにモジュロを使用することもできます。

//outside loop
$c = 1;


//inside loop
if ($c==1)
  $style = 'even animated fadeIn';
else
  $style='animated fadeIn';
$c = $c * -1;

またはさらに短い

//outside
$c = 1;

//inside
$style = (($c==1)?'even':'').' animated fadeIn';
$c = $c * -1;
于 2013-03-18T15:46:02.897 に答える
0

コードのこの部分から:

    $c = 0;
    $c++;
    if( $c == 2) {
        $style = 'even animated fadeIn';
        $c = 0;
    }
    else $style='animated fadeIn';

if-elseインクリメントとブロックをforeachループ内に配置する必要があります。このような:

<?php foreach($myposts as $post) :
    $c++;
    if( $c % 2 == 0) {
        $style = 'even animated fadeIn';
        $c = 0;
    }
    else $style='animated fadeIn'; ?>
   // Posts outputted here
<?php endforeach; ?>
于 2013-03-18T15:43:17.713 に答える