1

可能我的标题很难理解,如果你可以让大家更清楚,请编辑我的帖子谢谢。

所以我做了什么我创建了一个while循环并希望块像X

我每次都隔着两个街区。但我想要这个X表格。所以它会(block 1) [gray] , (block 2) [darkgray] 然后去(block 1) [darkgray] , (block 2) [gray]。为了实现这一点,我在我的 while 循环中创建了一个 if 函数,并且在 if 我创建了一个counter++. 计数器从 0 开始并添加 1 直到它变成 3,因为 3 使它不均匀,它会形成这个 X 形式。但问题是前两个区块会因为早期的奇数3而保持灰色。

有谁知道我怎么可能对前两个块进行硬编码?

同样在我的代码中,我以降序将信息从数据库中取出。

它是在 wordpress 中创建的,但更多的是关于我在这里制作的 php 函数。

It has to be. 
First = Gray
Second = Dark Gray
Third = Dark Gray
Fourth = Gray.

这应该一直重复。

enter code here

已经制作的代码(因为代码是用不同的语言制作的,我将其删除并替换为注释以便于理解):

      global $wp_query;
      $temp = $wp_query; 
      $args = (array(
              'post_type' => 'news',
              'posts_per_page' => 9999,
             'post__not_in' => array(835),
             'order' => 'DESC'));
            $wp_query = new WP_Query();
       $counter = 0;
      $wp_query->query($args); 
      while ($wp_query->have_posts()) : 
           $wp_query->the_post(); 
      ?>
      <?php $counter ++; 
      if($counter == 3) { ?>
       /** here comes the dark gray block **/
     <?php $counter = 0; ?>
     <?php }else { ?>
      /** here comes the gray block **/
     <?php } ?>

所以在社区的大量帮助下,我最终找到了我的解决方案。我觉得自己很愚蠢,以至于我自己没有发现这一点。使用此方法,您将获得(块 1 = 灰色)、(块 2 = 深灰色)、(块 3 = 灰色)、(块 4 = 深灰色)。 解决方案

 <?php $counter ++; 
  if($counter == 1) { ?>
   /** here comes the gray block **/
 <?php }else if($counter == 2 { ?>
  /** here comes the dark gray block **/
 <?php }else if($counter == 3 { ?>
  /** here comes the gray block **/
 <?php }else if($counter === 4 { ?>
  /** here comes the dark gray block **/
 <?php $counter = 0; } ?>

所以我最后在这里所做的是我创建了第 4 个着色手册,然后我将它重置为零并让它循环。因为我每次都有一排两个街区。

4

4 回答 4

4

而不是使用条件将所有内容放在父div中并像这样为孩子放置css

<div class="PARENT_DIV">
     while ($wp_query->have_posts()) : $wp_query->the_post(); 
      ?>
      <div id="CHILD_DIV">
         YOUR CONTENT 
      </div>
     <?php } ?>
</div>

<style>
    .PARENT_DIV:nth-child(odd){ background-color:#eee; }
    .PARENT_DIV:nth-child(even){ background-color:#fff; }
</style>
于 2013-06-21T07:46:30.963 回答
1

使用模数很简单

%是模运算符。

<?php
for($counter=0; $counter<10; ++$counter)
echo (!($counter % 3)  ? "gray" : "dark gray").'<br>'; 
?>

它输出

gray
dark gray
dark gray
gray
dark gray
dark gray
gray
dark gray
dark gray
gray

如你所愿。

我创建了 fiddle 来向您展示它是如何工作的。

检查小提琴

于 2013-06-21T07:44:35.977 回答
0

你也可以这样做

$colour = "gray";

while (//loop though posts){

$colour = ($colour=="gray")?"darkgray":"gray";
//do something with colour

这不需要额外的计数器,它只使用颜色变量

这使用三元运算符 http://php.net/manual/en/language.operators.comparison.php

于 2013-06-21T07:54:15.307 回答
0

其他答案有正确的想法,但设法制作斑马条纹,这不是你要求的。这是一个简单的解决方案来展示它是如何工作的,你需要修改它以适应你的风格。

我将颜色放在一个数组中,然后使用模数运算符,但基数为 4,它将在循环内返回 0,1,2,3,0,1,2,3,0,1... 的值. 使用它作为数组的索引来获取颜色。

$colours = array("gray","darkgray","darkgray","gray");

$counter = 0;

while (condition) {
    $colour = $colours[$counter % 4];
    //your code here

    $counter++;
}
于 2013-06-21T08:40:22.763 回答