phpforeachalternating

Alternate layout for every loop


In every loop I want to alternate the layout of my blocks, so it would be like this:

Loop 1: Left column image, right column text Loop 2: Left column text, right column image

But so far all i'm managing so far is each block is on the same side or the first block is duplicated, here is my code so far:

Any help or a point in the right direction would be greatly appreciated

<?php $i = 0;
foreach ($homepageblocks as $block):
$i++; ?>
<div class="row">
    <div class="container container-fluid">
        <div class="col-md-6">

                <h2><?php echo $block['title']; ?></h2>
                <?php echo $block['content']; ?>
                <a href="<?php echo $block['link']; ?>" class="blue--button">Read More</a>
        </div>
        <div class="col-md-6 nopadding">
            <img src="<?php echo '/uploads'.$img_path; ?>" alt="<?php echo $block['title']; ?>"/>
        </div>
    </div>
</div>
<?php if($i%2 == 0): ?>
<div class="row">
    <div class="container container-fluid">
        <div class="col-md-6 nopadding">
            <img src="<?php echo '/uploads'.$img_path; ?>" alt="<?php echo $block['title']; ?>" />
        </div>
        <div class="col-md-6">
            <h2><?php echo $block['title']; ?></h2>
            <?php echo $block['content']; ?>
            <a href="<?php echo $block['link']; ?>" class="blue--button">Read More</a>
        </div>
    </div>
</div>
<?php endif; ?>
<?php endforeach; ?>

Solution

  • Add else branch to your if:

    foreach ($homepageblocks as $block):
        $i++;?>
    <div class="row">
        <div class="container container-fluid">
    <?php
        // one layout type
        if($i%2 == 0):?>
            <div class="col-md-6 nopadding">
                <img src="<?php echo '/uploads'.$img_path; ?>" alt="<?php echo $block['title']; ?>" />
            </div>
            <div class="col-md-6">
                <h2><?php echo $block['title']; ?></h2>
                <?php echo $block['content']; ?>
                <a href="<?php echo $block['link']; ?>" class="blue--button">Read More</a>
            </div>
    
    <?php
        // another layout type
        else:?>
            <div class="col-md-6">
                    <h2><?php echo $block['title']; ?></h2>
                    <?php echo $block['content']; ?>
                    <a href="<?php echo $block['link']; ?>" class="blue--button">Read More</a>
            </div>
            <div class="col-md-6 nopadding">
                <img src="<?php echo '/uploads'.$img_path; ?>" alt="<?php echo $block['title']; ?>"/>
            </div>
    <?php 
        endif;?>
        </div>
    </div>
    <?php 
    endforeach; ?>