2016-08-07 3 views
0

Ищете решение проблемы У меня есть динамическое определение классов с использованием поля повторителя WordPress Advanced Custom Fields. Я сделал рытье, но не смог найти ресурс с той спецификой, которую я ищу.Определить сетку, основанную на подсчете множества элементов

Я показываю серию изображений портфолио, и в зависимости от того, сколько есть, я хотел бы дать определенные фотографии для определенных имен классов в сетке Foundation. По существу, я ищу сделать следующее:

  • Для пунктов 1-4: Нанести класс большой-6
  • Для элементов 5+: Нанести класс большого 4
  • Если только 1 item: применить класс большой-8

Мне удалось получить первые два примера, но у меня возникли проблемы с определением третьего набора параметров. Я пробовал несколько разных маршрутов, но я не уверен, что лучше всего на данный момент. Ниже приведен макет того, что я хочу выполнить, а также пример моего кода.

Цените любые советы!

Mockup

<div class="row portfolio-examples"> 
 

 
\t <?php 
 
     if(have_rows('portfolio_examples')): 
 
     \t while (have_rows('portfolio_examples')) : the_row(); 
 
\t \t \t \t $count = 0; 
 
\t \t \t \t $work = get_sub_field('portfolio_work'); 
 
    ?> 
 
        
 
    \t <?php if ($count != 0 || $count < 4) :?> 
 
     
 
     <div class="large-6 medium-6 columns end"> 
 
      <?php if($work): ?> 
 
       <img src="<?php echo $work['url']; ?>" alt="<?php echo $work['alt'] ?>" /> 
 
      <?php endif; ?> 
 
     </div> 
 
    
 
    \t <?php else: ?> 
 
     
 
\t <div class="large-8 medium-8 large-centered medium-centered columns"> 
 
      <?php if($work): ?> 
 
       <img src="<?php echo $work['url']; ?>" alt="<?php echo $work['alt'] ?>" /> 
 
      <?php endif; ?> 
 
      </div> 
 
     
 
    <?php endif; ?> 
 
    
 
    <?php 
 
     $counter++; 
 
     endwhile; 
 
     endif; 
 
    ?> 
 
    
 
</div>

ответ

1

Ваш вопрос не достаточно ясно для меня, потому что вы говорите, Применить класс больших или Нанести класс мелких, но в коде вы используете .large-6, а также .large-8.

Во всяком случае, предположу, что вы пытаетесь достичь (учитывая ваш образ), ваш PHP-код должен быть что-то вроде этого:

<div class="row portfolio-examples"> 
<?php 
if (have_rows('portfolio_examples')) : 
    /* We need to know the total number 
    * of rows in your repeater since you have 
    * a case where there's only one item. 
    */ 
    $portfolio = get_field('portfolio_examples'); 
    $count = is_array($portfolio) ? count($portfolio) : 0; 
    $index = 0; 
    while (have_rows('portfolio_examples')) : the_row(); 
     if ($count == 1) : 
      /* Place here your code for when 
      * there's only 1 item in your portfolio. 
      */ 
      ?> 
      <div class="medium"><!-- Medium item --></div> 
      <?php 
     elseif ($count > 1 && $index <= 3) : 
      // Code for your first 4 items 
      ?> 
      <div class="large"><!-- Large item --></div> 
      <?php 
     elseif ($count > 1 && $index > 3) : 
      // Code for your 5+ items 
      ?> 
      <div class="small"><!-- Small item --></div> 
      <?php 
     else : 
      // There are no items in your portfolio. 
     endif; 
     $index++; 
    endwhile; 
endif; 
?> 
</div> 

Примечания: Вы были переустановка до 0 вашего итератора индекса ($count в вашем случае) на каждой итерации. Кроме того, вы увеличивали $counter (не $count), который не был определен.

+1

Ах, слишком обернуто, пытаясь упростить мой вопрос, что он стал более запутанным. Это потрясающе и решило мою проблему. Я немного отредактирую вопрос, чтобы он мог быть более полезным для других. Спасибо! – usefulbattery

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