Support

Account

Home Forums Front-end Issues How to count the get_row_layout?

Solving

How to count the get_row_layout?

  • Hi,

    How can i count the get_row_layout that are inside a flexible content field and output that value in a class like:

    <?php
        if( have_rows('boxes') ):
        while ( have_rows('boxes') ) : the_row();
        if( get_row_layout() == 'text' ):
    ?>
    
    <div class="box field-class-01">   
        <?php the_sub_field('content'); ?>
    </div>
    
    <?php elseif( get_row_layout() == 'image' ): ?>
    
    <div class="box field-class-02">   
        <?php the_sub_field('content'); ?>
    </div>
    
    <?php elseif( get_row_layout() == 'photo_slider' ): ?>
    
    <div class="box field-class-03">   
        <?php the_sub_field('content'); ?>
    </div>
    
    <?php endif; endwhile; else : endif; ?>

    And that in the frontend every box will have his own class upcounting.

  • I think the get_row_index() function will do the work

    <?php
        if( have_rows('boxes') ):
        while ( have_rows('boxes') ) : the_row();
        if( get_row_layout() == 'text' ):
    ?>
    
    <div class="box field-class-<?php echo get_row_index(); ?>">   
        <?php the_sub_field('content'); ?>
    </div>
    
    <?php elseif( get_row_layout() == 'image' ): ?>
    
    <div class="box field-class-<?php echo get_row_index(); ?>">   
        <?php the_sub_field('content'); ?>
    </div>
    
    <?php elseif( get_row_layout() == 'photo_slider' ): ?>
    
    <div class="box field-class-<?php echo get_row_index(); ?>">   
        <?php the_sub_field('content'); ?>
    </div>
    
    <?php endif; endwhile; else : endif; ?>
    
  • Hi Thomas,

    That is sadly not working. If i have 2 columns next to each other then i get the same values in both columns like:

    field-class-1 —– field-class-1
    field-class-2 —– field-class-2
    field-class-3 —– field-class-3

    And not like:

    field-class-1 —– field-class-4
    field-class-2 —– field-class-5
    field-class-3 —– field-class-6

  • It seems that you loop the rows two times. If so save the last row_index in a variable and add this var to the row_index in the second loop.

    It should look like this:

    <?php
        if( have_rows('boxes') ):
        while ( have_rows('boxes') ) : the_row();
        if( get_row_layout() == 'text' ): ?>
    
            <div class="box field-class-<?php echo get_row_index(); ?>">   
                <?php the_sub_field('content'); ?>
            </div>
    
    <?php elseif( get_row_layout() == 'image' ): ?>
    
            <div class="box field-class-<?php echo get_row_index(); ?>">   
                <?php the_sub_field('content'); ?>
            </div>
    
    <?php elseif( get_row_layout() == 'photo_slider' ): ?>
    
            <div class="box field-class-<?php echo get_row_index(); ?>">   
                <?php the_sub_field('content'); ?>
            </div>
    
            <?php // on the last get_row_layout()
            $r = get_row_index(); ?>
    
    <?php endif; endwhile; else : endif; ?>
    
    <?php // start the second loop
    if( have_rows('boxes') ):
        while ( have_rows('boxes') ) : the_row();
        if( get_row_layout() == 'text' ):
            $r = $r + get_row_index(); ?>
    
            <div class="box field-class-<?php echo $r; ?>">   
                <?php the_sub_field('content'); ?>
            </div>
    
        <?php elseif( get_row_layout() == 'image' ):
            $r = $r + get_row_index(); ?>
    
            <div class="box field-class-<?php echo $r; ?>">   
                <?php the_sub_field('content'); ?>
            </div>
    
    <?php elseif( get_row_layout() == 'photo_slider' ):
            $r = $r + get_row_index(); ?>
    
            <div class="box field-class-<?php echo $r; ?>">   
                <?php the_sub_field('content'); ?>
            </div>
    
    <?php endif; endwhile; else : endif; ?>
  • Hi Thomas,

    It is working but when i am make more columns with the builder (like a new row with a 1 column layout) then i get again a same value on that box.

    How can i make it so every box in every get_row_layout on the page get a unique number?

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

The topic ‘How to count the get_row_layout?’ is closed to new replies.