У меня есть следующий цикл foreach:
<?php foreach ($this->item->extra_fields as $key=>$extraField): ?>
<span class="itemExtraFieldsValue"><?php echo $extraField->value; ?></span>
<?php endforeach; ?>
Первые 2 элемента в порядке, но элементы 3-14 мне нужно обернуть в div, чтобы я мог контролировать макет. Мне интересно, как я это сделаю? Проблема не в том, что все 3-14 предметов будут заполнены.
Любые советы приветствуются... спасибо
Вам нужна контрольная переменная, чтобы определить, к какой итерации вы находитесь, оттуда вы можете добавить divs или все, что вы хотите сделать с третьей итерации вперед. Вы можете попробовать что-то вроде этого:
<?php $i = 0;
foreach ($this->item->extra_fields as $key=>$extraField): ?>
<?php $i++;
if ($i < 3) { ?>
<span class="itemExtraFieldsValue"><?php echo $extraField->value; ?></span>
<?php } else { ?>
Add divs, or whatever you want to do here.
<?php }
endforeach; ?>
Таким образом, с вашими дополнениями, поскольку исходная формула должна работать, не связывайтесь с этой частью. Вместо этого $style
переменную $style
так:
$i = 1;
foreach ($this->item->extra_fields as $key=>$extraField):
if($i == 1)
$style = 'id="largeImageWrap" class="pull-left"';
elseif($i == 2)
$style = 'id="sidePanelWrap"';
else
$style = 'class="row"';
// If less than or equal to 3, add <div>
if(($i <= 3))
$front = true;
// If greater than 14 <div>
elseif(($i > 14))
$front = true;
// Else no <div>
else
$front = false;
if($front == true) echo "<div $style>"; ?>
<span class="itemExtraFieldsValue"><?php echo $extraField->value; ?></span>
<?php
// If greater than 2 and less than 14 echo blank or </div>
echo (($i > 2) && ($i < 14))? "":"
</div>";
$i++;
endforeach;