WordPress循环动态关闭Bootstrap行

时间:2015-03-03 20:11:26

标签: php wordpress twitter-bootstrap dynamic grid

我是PHP的新手,但我已经构建了一些相当简单的WordPress主题。我试图创造一些独特的东西,而且我不确定如何实现它(或者甚至可能实现它)。

我的目标是创建一个循环,当它到达列时动态关闭行" 12"计算引导程序(IE:col-md-3 + col-md-3 + col-md-6 = 12)。我最终想要实现的目标以及我当前如何设置静态文件=> https://jsfiddle.net/y2mLr3hd/7/embedded/result/。我只使用" display:flex;"现在只是为了展示我想要实现的目标。我希望它只是行而不是单行。

我使用UL和LI来使用WordPress的标准循环,但我不知道如何去做我想做的事情。我喜欢循环来计算列大小的随机数,包括列大小" 3,4,6,8和#34;并创建列大小等于" 12"就像我之前说的那样。那或者找到一种方法,让它以我目前设置的方式工作。

这是我所寻找的最接近的事情,但即便关闭=> https://stackoverflow.com/questions/16427962/twitter-bootstrap-spans-in-dynamic-websites#=也是如此。以下是该链接的代码,以供快速参考:

$i=0;
    foreach ($posts as $post):
        if ($i%2==0) echo '<div class="row-fluid">';
        echo '<div class="span6">'. $post->content .'</div>';
        if ($i%2==1) echo '</div>';
    $i++;
endforeach;  

任何关于我如何能够解决这个问题的帮助都会非常感激!

1 个答案:

答案 0 :(得分:2)

您的问题分为两部分:

  • 如何使用3,4,6和8
  • 在随机部分中划分12
  • 鉴于一组数字加起来为12,如何生成一个包含帖子的行?

第一个更像是一个数学问题。请注意,您只能组合3s和6s,或4s和8s。你不能将3和4结合起来,仍然可以得到12。

我们将设计一个简单的算法:

function getRandomNumbers()
{
    // We start with an empty array and add numbers until we hit 12.
    $result = array();

    // We choose either 3 or 4 as basic number.
    $x = mt_rand(3, 4);

    // Now, as long as we don't hit 12, we iterate through a loop, 
    // adding either the basic number, or 2 times the basic number:
    while (array_sum($result) < 12) {

        // Randomly decide 
        if (mt_rand(0, 1) > 0) {
            $newElement = 2 * $x; // This is either 6 or 8

            // However, always make sure not to exceed 12: 
            if (array_sum($result) + $newElement > 12) {
                $newElement = $x;
            }

        } else {
            $newElement = $x; // This is either 3 or 4
        }

        // Add the new number to the array:
        $result[] = $newElement;
    }

    // Return the resulting array
    return $result; 
}

现在我们需要使用这些数组来创建行。我们首先使用我们编写的函数生成一个包含随机数的数组。

我们将简单地遍历帖子,使用数组中的数字直到没有剩下的数字。每当我们需要一个新数组时,我们将生成一个包含随机数的新数组。因为这意味着我们已经添加了12个宽度值的列,这也是我们需要开始新行的点。

// Get the initial array with random numbers
$randomArray = getRandomNumbers();

// Open the initial row.
echo '<div>'; 

foreach ($posts as $post):

    if (count($randomArray) < 1) {
        // Close the row and start a new one: 
        echo '</div><div>';
        // Get a fresh array with random numbers:
        $randomArray = getRandomNumbers();
    }

    $nextRandomNumber = array_pop($randomArray); // This takes the next number.
    echo '<div class="col-md-' . $nextRandomNumber . '">'. $post->content .'</div>';

endforeach;

echo '</div>'; // Close the final row.