Tuesday, February 15, 2022

[FIXED] Insert Ad element into foreach loop every 4 instances

Issue

I am adding in feed Ads to my website. I have a foreach statement that creates a list of posts. I have created a counter that is supposed to count every four posts and insert the Ad content then repeat.

I have tried some other iterations of this but this is the one I can actually get to do something. I can find a lot of info on this exact thing pertaining to wordpress. But I am running cake php and would prefer a pure php solution.

    <?php
    $count = 1;
    foreach($stories as $story) {
            echo '<h2><a href="'.BASE_URL.'/'.$story->slug.'">'.$story->title.'</a></h2>';
            if(!empty($story->excerpt)) {
                echo $story->excerpt;
            } else {
                echo limit_text($story->body);
            }
            if ($count % 4 == 1) {
                echo AD_SENSE_INFEED;
            }
    }
    $count++;
    ?>

This code is what I currently have but its not working the way I would like it to. As if now it basically goes every other. So POST, AD, POST AD...etc.


Solution

Your problem isn't a coding problem, its a math problem. What you're using is called modulos or remainders basically.

So that said:

if ($count % 4 == 1) {

For it to equal 1 we have to feed in something that goes in evenly once and leaves one more.

What you want to do is:

if ($count % 4 == 0) {

Aka it means there's no remainder, 4 goes into it evenly with nothing left over.

As @RiggsFolly mentioned and I completely missed this(Give his comment a up vote) your $count variable should be incremented inside the loop as well otherwise it will only increment once after the loop ends.



Answered By - Lulceltech

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.