2013-12-18 95 views
0

我有這樣的HTML代碼:PHP而()包裝項目

<div class="row elem2"> 
    <div class="item"></div> 
    <div class="item"></div> 
</div> 
<div class="row elem4"> 
    <div class="item"></div> 
    <div class="item"></div> 
    <div class="item"></div> 
    <div class="item"></div> 
</div> 
<div class="row elem3"> 
    <div class="item"></div> 
    <div class="item"></div> 
    <div class="item"></div> 
</div> 

,我正在尋找一種方式來實現它在我的PHP而(WordPress的)。 的同時是

while (have_posts()) : the_post(); 
    echo '<div class="item"></div>'; 
endwhile; 

我已經嘗試了很多東西,但沒有奏效。我需要每2項劃分,並把它們放在一個包裝<div class="row elem2">後,未來4項<div class="row elem4">後,未來3項<div class="row elem3">

我做了很多的搜索,但我甚至不知道該怎麼搜索。

+0

如何在循環的每次迭代中增加一個計數器?你檢查第二,第六和第九個元素。一旦它達到9,你就將它設回0.然後你可以很容易地插入'

' and '
'。嘗試實施它,並告訴我們你得到什麼,以防萬一你沒有得到它的工作。 –

回答

1

有點粗糙,但這裏有一個解決方案

$i = 0; // Number of items made so far in the row 
$mode = 0; // Current row type enumerated by $elem 
$elem = array(2,4,3); // Enumeration of the desired row sizes 
while (have_posts()) : the_post(); 
    // Make a new row when there's no items yet 
    if ($i == 0) echo '<div class="row elem'. $elem[$mode] .'">'; 
    echo '<div class="item"></div>'; 
    $i++; 
    // Once the items in the current row has reached the row's maximum size 
    if ($i % $elem[$mode] == 0): 
     echo '</div>'; 
     $i = 0; // Reset items made for the row back to 0 
     $mode = ($mode + 1) % 3; // Increment mode and wrap if necessary 
    endif; 
endwhile; 
if ($i > 0) echo '</div>'; // Finish the last row if it wasn't finished 

這就是modulos是爲建!

+0

工程就像一個魅力!謝謝! 我幾乎可以得到更多類似意大利麪代碼的代碼,但仍需要考慮如何解決:如果最後一個「elem2」,「elem3」,「elem4」分別具有1,2或3個元素:( – dev

+0

我在想使用'next()'來遍歷'$ elem'變量,但是我不確定它是否會在到達結尾時返回到第一個元素。如果這個答案適用於您,請將它標記爲已接受:) – sjagr

+0

我做了標記,再次感謝。我有點新手在這裏:) – dev