Как правильно вычислить последовательность для вывода?
Всем привет
как вывести вот в такой структуре,
<div>
<div class="double items">
<div>1</div>
<div>2</div>
</div>
<div>3</div>
<div>
<div>
<div class="double items">
<div>4</div>
<div>5</div>
</div>
<div>6</div>
<div>
<div>
<div class="double items">
<div>7</div>
<div>8</div>
</div>
<div>9</div>
<div>
$idx начинается с 1
{if $idx == 1 || $idx % 4 == 1}
<div class="ascents-section">
{/if}
{if $idx % 3 != 1}
<div class="ascents-section__item ascents-double">
{/if}
<div class="ascents-double__item" title="{$id | resource: 'pagetitle'}">
<div class="ascents-section__item-photo" id="photo-effect">
<picture>
<source media="(min-width: 1440px)" srcset="{$id | resource:'image'}">
<img class="effectImg" src="{$id | resource:'image'}" alt="{$id | resource: 'pagetitle'}">
</picture>
</div>
<div class="ascents-section__item-info">
<h2 class="for-heading">{$id | resource: 'pagetitle'}</h2>
<p class="subtitle">Легкий</p>
<a href="{$_modx->makeUrl($id)}" title="{$id | resource: 'pagetitle'}" class="button button-program">Перейти</a>
</div>
</div>
{if $idx % 3 == 1}
</div>
{/if}
{if $idx % 3 == 1}
<div class="ascents-section__item" title="{$id | resource: 'pagetitle'}">
<div class="ascents-section__item-photo" id="photo-effect">
<picture>
<source media="(min-width: 1440px)" srcset="{$id | resource:'image'}">
<img class="effectImg" src="{$id | resource:'image'}" alt="{$id | resource: 'pagetitle'}">
</picture>
</div>
<div class="ascents-section__item-info">
<h2 class="for-heading">{$id | resource: 'pagetitle'}</h2>
<p class="subtitle">Тяжелый</p>
<a href="{$_modx->makeUrl($id)}" title="{$id | resource: 'pagetitle'}" class="button button-program">Перейти</a>
</div>
</div>
{/if}
{if $idx % 3 == 1}
</div>
{/if}
Ответы (1 шт):
Автор решения: InDevX
→ Ссылка
Абстрактный пример, как можно "построить" нужную Вам структуру.
Сперва массив разбивается (исп. array_chunk) на подмассивы с 3-х эл-тов, и уже каждый из них "обёртывается" div'ами
$array = [1,2,3,4,5,6,7,8,9];
foreach (array_chunk($array, 3) as $items) {
echo '<div><div class="double items">';
foreach ($items as $idx => $value) {
if ($idx === 2) {
echo '</div>';
}
echo "<div>$value</div>";
}
echo '</div>';
}