2015-04-19 2 views
0

Я использую следующее, чтобы обернуть каждые 3 divs и обернуть 4-5 так же, если есть только 2. (то же самое применимо, это было каждые 6, 4 и т. Д.)В то время как цикл добавляет лишний пустой элемент

Когда его только 3 divs/elements они обернуты так, как должны. Но затем создается и пустой элемент. Итак, в приведенном ниже примере. Допустим, у вас было 3 divs за элемент списка. Ну, в этом вам было всего 3, но пустой элемент списка создается без ничего. Как я могу добавить свой код, чтобы он не создал пустой элемент? (В моем случае, используя ретрансляторы с FlexSlider, пустой слайд производится)

<?php //going to wrap every 3 in this example 
if (get_field('your_repeater_name')): ?> 

<?php $index = 1; ?> 
<?php $totalNum = count(get_field('your_repeater_name')); ?> 

<li> 
<?php while (has_sub_field('your_repeater_name')): ?> 

    <div class="col-sm-4"> 
     <?php the_sub_field('your_sub_field'); ?> 
    </div> 
    <? if ($index % 3 == 0) : ?> 
     <? if ($index < $totalNum) : ?> 
      // more rows, so close this one and start a new one 
      </li> 
      <row> 
     <? elseif ($index == $totalNum) : ?> 
      // last element so close row but don't start a new one 
      </li> 
     <? endif; ?> 

    <? endif; ?> 

<?php $index++; ?> 
<?php endwhile; ?> 

<?php endif; ?> 

ответ

0

Попробуйте изменить «петлю» часть вашего сценария, как это:

<li> 
<?php while (has_sub_field('your_repeater_name')): ?> 

    <div class="col-sm-4"> 
     <?php the_sub_field('your_sub_field'); ?> 
    </div> 
    <?php if ($index % 3 == 0 && $index < $totalNum) : ?> 
     </li><li> 
    <?php endif; ?> 

    <?php $index++; ?> 
<?php endwhile; ?> 
</li> 

Разница является последним </li> вне цикла (потому что его нужно закрыть в любом случае, нет необходимости вставлять его внутри if), так что теперь вам нужно только проверить, нужно ли вставить еще одну строку $index < $totalNum.

+1

Пожалуйста, добавьте некоторое объяснение, что делает этот код. – Nilambar

Смежные вопросы