2015-10-14 7 views
1

Я пытаюсь получить информацию из базы данных в среде ZF1. Я использую цикл for здесь. То, что я пытаюсь сделать, это вставить новое разделение css (div) для каждой из четырех итераций. Другими словами, я хотел бы вставить блок, за которым следуют четыре итерации цикла. Например, если я запускаю цикл двенадцать раз, после каждых четырех итераций должно быть три новых блока. Это в основном рекламный блок, который может содержать изображение и ссылку. Мне нужна идея.Вставка блока после указанного числа итераций цикла

Вот пример блока.

<div class="flexblock-image"> 
    <a href="https://offers.example.com/offer/600112?cid=BWO_mh.com_html_getbackinshape&amp;keycode=254194"> 
     <img alt="" title="" typeof="foaf:Image" src="http://www.example.com.gif"> 
     </a> 
    </div> 

Вот цикл, который я закодировал в своем приложении.

<?php if ($this->numArticles > 0) : ?> 
<?php for ($i = 0; $i < 13; $i++) : ?> 
<div class="channel-image "> 
    <div class="img"> 
     <h2 class="primary-tag"> 
      <a href="/tags/weight-loss-tips" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype=""> 
       <?php echo $this->articles[$i]->slug ; ?> 
      </a> 
     </h2> 
     <a href=" 
      <?php echo $this->articles[$i]->getViewUrl(); ?>"> 
      <img typeof="foaf:Image" src=" 
       <?php echo $this->articles[$i]->getCover('crop'); ?>" width="650" height="412" alt=" 
       <?php echo addslashes($article->title); ?>" title=" 
       <?php echo addslashes($article->title); ?>"> 
      </a> 
     </div> 
     <div class="channel-content"> 
      <p class="date"> 
       <span property="dc:date dc:created" content="2015-06-04T11:06:18-04:00" datatype="xsd:dateTime"> 
        <?php echo $this->dateFormatter()->diff(strtotime($this->articles[0]->activated_date), $this->timeDiffFormats); ?> 
       </span> 
      </p> 
      <h2 class="article-title" id="title-node-93726"> 
       <a href=" 
        <?php echo $this->articles[$i]->getViewUrl(); ?>"> 
        <?php echo addslashes($this->articles[$i]->title); ?> 
       </a> 
      </h2> 
      <div class="byline-container"> 
       <span class="byline-role">By </span> 
       <span class="field-author"> 
        <a href="#" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype=""> 
         <?php echo sprintf($this->translator()->_('show.by'), $this->articles[0]->getAuthor()); ?> 
        </a> 
       </span> 
      </div> 
     </div> 
    </div> 
    <?php endfor; ?> 
    <?php endif; ?> 

ответ

0

Не специалист по PHP, но не будет if заявления внутри вашей работы for контура с помощью оператора модуля?

<?php for ($i = 0; $i < 13; $i++) : ?> 

    <?php if ($i % 4 === 0) : ?> 

     // Custom HTML/CSS here 

    <?php endif; ?> 

<?php endfor; ?> 

Подробнее об операторе модуля можно найти here

+0

Да, я думал о модуле оператора. Ваш код помещает блок css в начало цикла, который я не хочу. В любом случае, спасибо за повторное подтверждение моей идеи. –

+0

Перемещает оператор 'if' туда, где рекламный блок не должен быть вариантом? – Jason

+0

это может работать ; он помещает рекламный блок после третьей итерации, а затем после 4-й итерации. –

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