修改foreach循环以根据ID变量输出<li> </li>

时间:2012-05-02 09:56:59

标签: php magento

我正在尝试修改Magento网站前端绘制类别列表的方式(简单的想法)。我有一个类别列表,我想分开并使用jquery协议,所以对于EG。我想要一个标题为“2010年及以后”的标题,其中包含ID为1到10的类别。然后我想要一个标题为“2011”的标题,其中ID为11到20的实时类别。

下面的默认类别代码只会循环显示ID并回显<UL>中的类别列表 - 但我想自定义<UL>

<?php $collection = $this->_getCollection(); ?>
<?php if (count($collection) > 0) : ?>



    <?php foreach ($collection as $_category ) : ?>            

                <li>
                    <a href="<?php echo $this->getUrl('gallery/category/view/', array('id' => $_category->getId())); ?>"><?php echo $this->htmlEscape($_category->getName()) ?></a>
                </li>

    <?php endforeach ?>

<?php endif; ?>

我看不到树木了! - 我想把ID拉成一个数组并根据IF语句绘制新结构,但是在构建数组时没有好运。

任何人都可以看到一个快速的方法,我可以打破循环说,如果ID是1到10然后列在<li class="2010">,然后继续在<li class="2011">中的ID 11到20,例如。 ?

非常感谢

2 个答案:

答案 0 :(得分:1)

尝试检查您不想显示的类别ID,并使用continue;来获取下一个:

<?php foreach ($collection as $_category ): ?>
<?php if ($_category->getId() == 10) { continue; } ?>
    <li>
        <a href="<?php echo $this->getUrl('igallery/category/view/', array('id' => $_category->getId())); ?>"><?php echo $this->htmlEscape($_category->getName()) ?></a>
    </li>
<?php endforeach ?>

答案 1 :(得分:0)

你应该分开你的问题。一部分是输出,可以用函数表示:

<?php

$htmlLi= function($class, $url, $name) {
?>
                <li class="<?php echo $class; ?>">
                    <a href="<?php echo $url; ?>"><?php echo $name; ?></a>
                </li>
<?php
}

然后你有逻辑来决定基于某个id的类名:

$classById = function($id) {
    $class = $id < 11 ? '2010' : '2011';
    return $class;
}

你终于要把它放在一起了:

<?php $collection = $this->_getCollection(); ?>
<?php if (count($collection) > 0) : ?>

    <?php foreach ($collection as $_category) {
        $id    = $_category->getId());   
        $class = $classById($id);
        $url   = $this->getUrl('gallery/category/view/', array('id' => $id);
        $name  = $this->htmlEscape($_category->getName());
        $htmlLi($class, $url, $name);
    } ?>

<?php endif; ?>

这也表明,您自己的函数_getCollection()尚未以您需要的格式返回数据。它可能会更好地返回你真正需要的字段:

$class, $url and $name