Я использовал плагин Flexslider для показа слайд-шоу из трех продуктов одновременно. Количество продуктов варьируется от страницы к странице. Чтобы плагин показывал только три, я использую простой счетчик:
<ul class="slides row">
<li>
<?php
$counter = 0;
while ( have_rows('series_solutions') ) : the_row();
$counter++;
?>
<div class="col-md-4 series-detail">
<?php $series_image = get_sub_field('solution_image');
echo '<img class="img-responsive center-block" src="' . $series_image['url'] . '" alt="' . $series_image['alt'] . '" />';
?>
<span class="series-number"><?php the_sub_field('solution_number');?></span>
<span class="series-description"><?php the_sub_field('solution_description');?></span>
<span class="series-screen"><?php the_sub_field('solution_screen_dimensions');?></span>
<span class="series-body"><?php the_sub_field('solution_body_dimensions');?></span>
<span class="series-resolution"><?php the_sub_field('solution_resolution');?></span>
<span class="series-shop"> <a class="btn btn-primary" href="<?php the_sub_field('solution_spec_sheet_link');?>" target="_blank">Download the Spec Sheet</a>
</span>
</div><!-- col-md-4-->
<?php
if ($counter % 3 == 0) {
echo "</li><li>";
}?>
<?php endwhile;?>
</li></ul>
Проблема в том, что Flexslider ищет <li>
элементы для определения начала и конца содержимого слайда. Если на странице только три продукта, счетчик по-прежнему добавляет </li><li>
который Flexslider интерпретирует как новый и пустой слайд:
Может ли этот счетчик быть структурирован таким образом, чтобы предотвратить это открытие <li>
от генерирования, если нет данных, чтобы оправдать это?
Это хорошо известная проблема, я думаю. Как насчет этого решения (не проверено, но должно быть так):
<ul class="slides row">
<?php
$counter = -1;
while ( have_rows('series_solutions') ) : the_row();
$counter++;
if ($counter % 3 == 0) {
echo "<li>";
}?>
<div class="col-md-4 series-detail">
<?php $series_image = get_sub_field('solution_image');
echo '<img class="img-responsive center-block" src="' . $series_image['url'] . '" alt="' . $series_image['alt'] . '" />';
?>
<span class="series-number"><?php the_sub_field('solution_number');?></span>
<span class="series-description"><?php the_sub_field('solution_description');?></span>
<span class="series-screen"><?php the_sub_field('solution_screen_dimensions');?></span>
<span class="series-body"><?php the_sub_field('solution_body_dimensions');?></span>
<span class="series-resolution"><?php the_sub_field('solution_resolution');?></span>
<span class="series-shop"> <a class="btn btn-primary" href="<?php the_sub_field('solution_spec_sheet_link');?>" target="_blank">Download the Spec Sheet</a>
</span>
</div><!-- col-md-4-->
<?php
if ($counter % 3 == 2) {
echo "</li>";
endwhile;
if($counter % 3 != 2) {
echo "</li>";
}
?>
</ul>
Других решений пока нет …