-1

我的循环使用以下方法在两列中显示帖子:

<?php
if (have_posts()): while (have_posts()) : the_post();
 $count++;
?>
    <?php  if ($count == 1) : ?>
    <div class="home-ci-row">

    <div style="padding: 0px;" class="main-column-item-wrap">
    CONTENT OF POST : Title, Thumbnail, Excerpt... etc
    </div>

    <div class="home-ci-gap"></div><!-- /* the gap */ -->

    <?php elseif ($count == 2) : ?>    

   <div style="padding: 0px;" class="main-column-item-wrap">
   CONTENT OF POST : Title, Thumbnail, Excerpt... etc
   </div> <!-- main-column-item-wrap -->


</div><!-- /* home-ci-row*/ -->

<?php $count = 0; ?>

      <?php else : ?>
    // No posts
<?php endif; endwhile; endif; ?>

您可以看到第一个计数中的<div class="home-ci-row">打开和第二个计数中的关闭</div>

所以当我的循环有偶数个帖子时效果很好,但有奇数个它不会关闭 div

所以我的想法是:如果循环有偶数

http://i.stack.imgur.com/Hu4Ua.png

如果循环有奇数个帖子

http://i.stack.imgur.com/JjqzZ.png

4

3 回答 3

2

顺便说一句,您可以执行以下操作:

<?php
$count=0;
while(have_posts()){
    if($count%2==0){
        echo '<div class="home-ci-row">';
        //draw your left div here
    }else if($count%2==1){
        //draw your gap here
        //draw your right div here
        echo '</div>';
    }
    $count++;
}
//close div if count is an odd number
if($count%2==1) echo '</div>';
?>
于 2013-03-09T08:45:29.250 回答
1

是否可以换成for循环?这是你需要的吗?

for ($i = 0; $i < $numberOfElements; $i++)
{ 
    //if (odd number) && (this is the last element)
    if (($i % 0 == 1) && ($i == $numberOfElements - 1))
    {
        //Special Case
    }
    else
    {
        //Normal Case
    }
}

警告:注意错误,PHP 不是我最擅长的语言

于 2013-03-09T08:37:20.417 回答
0

fischi在WP Development StackExchange上回答了这个问题

引用他的回答

你可以更容易地做到这一点。由于您正在制作可以通过浮动实现的布局,因此无需每秒钟声明一个 Row 。

在我的代码示例中,我只是使用$count来确定 HTML 元素的类。结合显示的帖子总数。

如果帖子总数$wp_query->post_count达到$countAND 总数是奇数,我给元素 Class fullwidth。同样,我确定它是第一个还是第二个(参见 IF 语句)。

之后我需要做的就是为循环中的每个 HTML 元素输出相应的类。除了类之外,没有元素彼此不同。

我使用ModuloPHP ( %) 中的运算符来确定奇数/偶数。1如果我使用它会提供$count % 2并且$count很奇怪。如果您不确定此运算符,请在此处阅读。

因此,您的代码可能如下所示:

<?php
    $count = 0;
    if (have_posts()): while (have_posts()) : the_post();
        if ( ++$count == $wp_query->post_count && ( $wp_query->post_count % 2 ) == 1 ) {
            // if final count is reached AND final count is odd
            // full width item
            $postclass = "fullwidth";
            $opentag = '';
            $closingtag = '</div>';
        } else if ( ( $count % 2 ) == 1 ) {
            // if $count is odd it is the first item in a 'row'
            $postclass = "halfwidth first";
            $opentag = '<div class="home-ci-row">';
            $closingtag = '';
        } else {
            // second item in a row
            $postclass = "halfwidth second";
            $opentag = '';
            $closingtag = '</div>';
        }
?>
    <?php echo $opentag; ?>
    <div class="main-column-item-wrap <?php echo $postclass; ?>">
    CONTENT OF POST : Title, Thumbnail, Excerpt... etc
    </div><!-- main-column-item-wrap -->
    <?php echo $closingtag; ?>

<?php endwhile; endif; ?>
于 2014-04-19T07:35:17.930 回答