Support

Account

Home Forums ACF PRO Flexible Content, Pagination and Injecting Ads

Solving

Flexible Content, Pagination and Injecting Ads

  • I’m using flexible content to create some items for a multi-page slideshow. I’d like to sprinkle some ads in between a few of the items (every 4th item) and then have the slideshow items continue. But I’m having issues getting it to work with the pagination.

    Any thoughts?

    Here is the code:

    <!-- start slideshow-wrapper -->
    <div class="slideshow-wrapper">
    <?php if(get_query_var('page')) { $page = get_query_var('page'); } else { $page = 1; }
        $row				= 0;
        $items_per_page		= 1;
        $items				= get_field('slideshow_items');
        $items_total		= count($items);
        $total				= $items_total;
        $pages				= ceil($total / $items_per_page);
        $min				= (($page * $items_per_page) - $items_per_page) + 1;
        $max				= ($min + $items_per_page) - 1;
    if(have_rows('slideshow_items')): ?>
        <div class="slideshow">
        <?php while(have_rows('slideshow_items')): the_row(); $row++; if($row < $min) { continue; } if($row > $max) { break; } ?>
            <div class="slide">
            <!-- slide content -->
            </div>
        <?php endwhile; ?>
        </div>
    <?php endif; ?>   
    </div>
    <!-- end slideshow-wrapper -->
    
    <div class="slideshow-buttons">
    	<?php echo paginate_links( array(
            'base' => get_permalink() . '%#%' . '/',
            'format' => '?page=%#%',
            'current' => $page,
            'total' => $pages,
            'prev_text' => __('<span class="arrow">&lsaquo;</span'),
            'next_text' => __('<span class="arrow">&rsaquo;</span>')
        )); ?>
        <div class="page-buttons prev disabled"><span class="arrow">&lsaquo;</span></div>
        <div class="page-buttons next disabled"><span class="arrow">&rsaquo;</span></div>
    </div>
  • I don’t see where you’re trying to insert these rows, but given what I so see. You’re going to need to adjust those counts, $total, $pages, $min, $max, to account for those extra rows you want to insert.

    Personally, I would look at this

    
    $items = get_field('slideshow_items');
    

    This is actually returning an array with all of the rows. I would then insert my extra rows directly into this array using the same format and then to all of the work based on the new array. You can see what’s in it by

    
    echo '<pre>'; print_r($items); echo '</pre>';
    

    once you’ve added your new items then you can loop through the array rather than using the have_rows() loop

    
    foreach ($items as $item) {
      // slider
    }
    
  • Thanks @hube2! We’ll give it a try and post some feedback.

Viewing 3 posts - 1 through 3 (of 3 total)

You must be logged in to reply to this topic.