Цикл ProcessWire foreach для отображения 4 столбцов в каждой строке

Я уже давно работаю над сайтом и наткнулся на проблему в создании конкретного цикла foreach. Я использую ProcessWire для создания CMS для веб-сайта. Я хочу отобразить 4 столбца в каждой строке, но я сбит с толку. Вот мой код до сих пор;

<div class="container">
<? $count == 0; ?>
<? foreach($page->events_tickets as $cols): ?>
<!-- portfolio item -->
<? if ($count % 4 == 0)
echo "<div class='row'>";
?>
<? for($count = 0; $count < 4; $count++) { ?>
<div class="span3  project-item graphics box">
<div class="thumbnail" >
<!-- IMAGE CONTAINER-->
<a rel="prettyPhoto" href="<?=$cols->event_url;?>" title="portfolio image">
<img src="<?=$cols->event_img->url;?>" alt="<?=$cols->event_img->description;?>" />
</a>
<!--END IMAGE CONTAINER-->
<!-- CAPTION -->
<div class="caption">
<h4 class=""><?=$cols->event_title;?></h4>
<p class="caption-descr" id="opening-reception" style="height: 190px; overflow:auto;">
<?=$cols->event_desc;?> <a href="<?=$cols->event_url;?>" target="_blank" style="" title=""> BUY TICKETS</a>
</p>
</div><!--END CAPTION -->
</div><!-- END: THUMBNAIL -->
</div><!-- END: portfolio item -->
<? if($count % 1 = 1 ) break;} ?>
</div>  <!--END OF ROW-->
<? endforeach; ?>

2

Решение

Неважно, я в конце концов узнал, как это решить. Вместо этого, используя вложенные циклы, я решил выполнить цикл через условный оператор if else.

<div class="row">
<? foreach($page->events_tickets as $cols): ?>
<? if($cols->event_num % 4 != 0) {?>
<!-- portfolio item -->
<div class="span3  project-item graphics box">
<div class="thumbnail" >
<!-- IMAGE CONTAINER-->
<a rel="prettyPhoto" href="<?=$cols->event_url;?>" title="portfolio image">
<img src="<?=$cols->event_img->url;?>" alt="<?=$cols->event_img->description;?>" />
</a>
<!--END IMAGE CONTAINER-->
<!-- CAPTION -->
<div class="caption">
<h4 class=""><?=$cols->event_title;?></h4>
<p class="caption-descr" id="opening-reception" style="height: 190px; overflow:auto;">
<?=$cols->event_desc;?> <a href="<?=$cols->event_url;?>" target="_blank" style="" title=""> BUY TICKETS</a>
</p>
</div><!--END CAPTION -->
</div><!-- END: THUMBNAIL -->
</div><!-- END: portfolio item -->

<? } else if($cols->event_num%4 == 0) {?>
<div class="row">
<div class="span3  project-item graphics box">
<div class="thumbnail" >
<!-- IMAGE CONTAINER-->
<a rel="prettyPhoto" href="<?=$cols->event_url;?>" title="portfolio image">
<img src="<?=$cols->event_img->url;?>" alt="<?=$cols->event_img->description;?>" />
</a>
<!--END IMAGE CONTAINER-->
<!-- CAPTION -->
<div class="caption">
<h4 class=""><?=$cols->event_title;?></h4>
<p class="caption-descr" id="opening-reception" style="height: 190px; overflow:auto;">
<?=$cols->event_desc;?> <a href="<?=$cols->event_url;?>" target="_blank" style="" title=""> BUY TICKETS</a>
</p>
</div><!--END CAPTION -->
</div><!-- END: THUMBNAIL -->
</div><!-- END: portfolio item -->
</div>  <!--END OF ROW-->
<? } ?>
<? endforeach; ?>
</div>  <!--END OF ROW-->

Я добавил дополнительное поле к events_tickets поле и назвал это events_num, events_num начинается с 1 и следует до конца записи.<? if($cols->event_num % 4 != 0) {?> затем отобразите 4 столбца. Тогда, если число достигло 5, остаток от деления на 4 является нечетным числом, таким образом он создает <div class="row"> и отображает еще 4 столбца. Затем эта процедура продолжается. Таким образом, нет необходимости в создании вложенного цикла.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]