2014-01-16 53 views
1

我正在使用Opencart和Bootstrap 2.3.2来尝试创建带有列的子菜单。 我已经创建了一个opencart模块,它基本上是类别模块的一个副本。我将使用此模块在下拉菜单中的主导航栏中显示类别。问题是,如果有超过5个类别,那么我想在下拉菜单中创建一个新列。Foreach并继续创建子菜单列

PHP的我至今是:

<ul class="dropdown-menu"> 
    <li> 
     <div class="row-fluid"> 
     <ul class="box-category"> 
      <?php foreach ($categories as $category) { ?> 
       <li> 
        <?php if ($category['category_id'] == $category_id) { ?> 
         <a href="<?php echo $category['href']; ?>" class="active"><?php echo $category['name']; ?></a> 
        <?php } else { ?> 
         <a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a> 
        <?php } ?> 
       </li> 
      <?php } ?> 
     </ul> 
     </div> 
    </li> 
</ul> 

我需要的结果是:

<ul class="dropdown-menu"> 
    <li> 
     <div class="row-fluid"> 
      <ul class="box-category span6"> 
       <li><a href="#">Category 1</a></li> 
       <li><a href="#">Category 2</a></li> 
       <li><a href="#">Category 3</a></li> 
       <li><a href="#">Category 4</a></li> 
       <li><a href="#">Category 5</a></li> 
      </ul> 
      <ul class="box-category span6"> 
       <li><a href="#">Category 6</a></li> 
       <li><a href="#">Category 7</a></li> 
      </ul> 
     </div> 
    </li> 
</ul> 

我一直在寻找到“继续”对foreach语句,但一些内部使用代码(例如将span6类添加到ul)不属于foreach语句。我如何修改我的代码以获得期望的结果?

+0

你有没有想过使用像[小胡子](https://github.com/bobthecow/mustache.php)这样的模板引擎? –

+0

@Brodie - 感谢您的链接。说实话,这是我的头,但我会进一步看看它。 – DesignSubway

+0

我推荐这个[Net Tuts教程](http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-using-the-mustache-template-library/)让你开始。 –

回答

2

为此,您需要利用modulus operator的:

<?php $count = 0; ?> 
<?php foreach ($categories as $category) { ?> 
    <?php // The if statement should be true every fifth iteration ?> 
    <?php if($count % 5 == 0) { ?> 
    <ul class="box-category span6"> 
    <?php } ?> 
    <li> 
     <?php if ($category['category_id'] == $category_id) { ?> 
      <a href="<?php echo $category['href']; ?>" class="active"><?php echo $category['name']; ?></a> 
     <?php } else { ?> 
      <a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a> 
     <?php } ?> 
    </li> 
    <?php if($count % 5 == 0) { ?> 
     <ul class="box-category"> 
    <?php } ?> 
<?php 
    $count++; 
} 
?> 

这是相当粗糙,或许可以被清理了一下,但应该工作(未经测试)

+0

嗨,谢谢你指出我在正确的方向。你的例子还没有到现在,但至少现在我有一些工作。谢谢 – DesignSubway