Как разделить категории на строки из трех столбцов - PullRequest
0 голосов
/ 29 февраля 2012

У меня есть цикл foreach, который извлекает подкатегории текущей категории.

<?php $_categories = $this->getCurrentChildCategories(); ?>
<?php foreach ($_categories as $_category): ?>
<div class="item">
    <a href="<?php echo $_category->getURL() ?>" title="<?php echo $this->htmlEscape($_category->getName()) ?>"><?php echo $this->htmlEscape($_category->getName()) ?></a>
</div>
<?php endforeach; ?>

Я хочу разделить результаты в строках по три столбца. Тогда желаемый формат:

<div class="row">
    <div class="item">
        content
    </div>
    <div class="item">
        content
    </div>
    <div class="item">
        content
    </div>
</div>
<div class="row">
    <div class="item">
        content
    </div>
    <div class="item">
        content
    </div>
    <div class="item">
        content
    </div>
</div>
...

--------------- EDIT ----------------

Мой код теперь выглядит следующим образом. Как и где я могу закрыть строку div?

<?php $_categories = $this->getCurrentChildCategories(); ?>
<?php foreach ($_categories as $_category): ?>
<?php if ($i % 3 == 0) { ?>
<div class="row">
<?php } ?>
<div class="item">
    <h2><a href="<?php echo $_category->getURL() ?>" title="<?php echo $this->htmlEscape($_category->getName()) ?>"><?php echo $this->htmlEscape($_category->getName()) ?> &raquo;</a></h2>
</div>
<?php $i++; endforeach; ?>

--------------- РЕДАКТИРОВАНИЕ 2 ----------------

Становится ближе. Это результат:

<div class="category-list">
    <div class="row"></div>
<div class="row">
    <div class="item">
        content
    </div>
    <div class="item">
        content
    </div>
    <div class="item">
        content
    </div>
</div>
<div class="row">
    <div class="item">
        content
    </div>
    <div class="item">
        content
    </div>
    <div class="item">
        content
    </div>
</div>
<div class="row">
    <div class="item">
        content
    </div>
    <div class="item">
        content
    </div>
    <div class="item">
        content
    </div>
</div>
</div>

Как мне избавиться от пустого ряда?

Код теперь выглядит следующим образом:

<div class="category-list">

<?php
$i=0;
echo '<div class="row">';
$_categories = $this->getCurrentChildCategories();
foreach($_categories as $_category):
{
if($i %3 ==0)
  { ?>
     </div>
     <div class="row">
        <div class="item">
            <h2><a href="<?php echo $_category->getURL() ?>" title="<?php echo $this->htmlEscape($_category->getName()) ?>"><?php echo $this->htmlEscape($_category->getName()) ?> &raquo;</a></h2>
        </div>
  <? }
  else
  { ?>
        <div class="item">
            <h2><a href="<?php echo $_category->getURL() ?>" title="<?php echo $this->htmlEscape($_category->getName()) ?>"><?php echo $this->htmlEscape($_category->getName()) ?> &raquo;</a></h2>
        </div> 
  <? }
  $i++;
}
endforeach;
?>

</div>

--------------- РЕДАКТИРОВАТЬ 3 ----------------

Решено путем скрытия пустой строки с помощью CSS.

Ответы [ 2 ]

1 голос
/ 29 февраля 2012

Надеюсь, это поможет

<?php
$i=0;
echo"<div class="row" >
foreach($category as $cat)
{
if($i %3 ==0)
  {
     echo"</div><div class='row'> <div class='item'> Content </div>";  
  }
  else
  {
    echo"<div class='item'> Content </div>";  
  }
  $i++;
}
echo"</div>";
?>
1 голос
/ 29 февраля 2012

Вы должны ввести переменную az итератор (?), Например, $ i = 0

if ($i % 3 == 0) { //modulo
   // use for whatever you want
}

В каждом цикле (возможно, в конце, это зависит от вашего реального решения) вы должны увеличивать $ i (++ $ i);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...