我正在尝试修改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,例如。 ?
非常感谢
答案 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