2013-12-18 2 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에서 그것을 구현하는 방법을 찾고 있어요. 나는 물건을 많이 해봤지만, 아무도 일하지 않은

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

으로 그동안입니다. 나는 모든이 개 항목을 나누고 후 랩 <div class="row elem2">에 넣어 필요가있는 <div class="row elem3">

나는 검색을 많이 했어요,하지만 난 무엇도 확실하지 않다에서 다음 3 개 항목 <div class="row elem4"> 및 그 이후 다음 4 개 항목 검색.

+0

루프의 반복마다 카운터를 늘리면 어떨까요? 2 번째, 6 번째, 9 번째 요소를 확인합니다. 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

) '$ elem' var을 통해 이동하기 위해'next()'를 사용했지만, 일단 끝에 도달하면 첫 번째 요소로 감쌀지를 확신하지 못했습니다.이 답이 효과가 있으면 받아 들일 수있는 것으로 표시하십시오 :) – sjagr

+0

나는 그것 (감사)을 다시 채점했다. 나는 다소 초보자 다 :) – dev