简单的Magento两级产品导航菜单显示
时间:2016-02-29 13:45来源: 作者: 点击:次
仿站过程中经常会遇到一些包含两层产品分类的菜单,如下图这样: 这种菜单的实现直观上讲是比较简单的,只需要做两次遍历就可以了。但是正如众所周知的那样,Magento作为一个庞
Magento仿站过程中经常会遇到一些包含两层产品分类的菜单,如下图这样:
这种菜单的实现直观上讲是比较简单的,只需要做两次遍历就可以了。但是正如众所周知的那样,Magento作为一个庞大的系统,它内部方法的定义是比较零散的,同时也鲜有文档来完整地说明这一系列的方法,因此在使用过程中不断积累是上手的重要途径。
这部分实现的模板代码如下:
<div>
<div>
<span>商品<span>分类</span></span>
</div>
<?php $rootCategoryId = Mage::app()->getStore()->getRootCategoryId(); ?>
<?php $_category = Mage::getModel(‘catalog/category’)->load($rootCategoryId); ?>
<?php $_categories = $_category->getChildrenCategories(); ?>
<?php $_count = is_array($_categories)?count($_categories): $_categories->count(); ?>
<?php if($_count): ?>
<div>
<ul id=”leftnav”>
<?php $i=0;foreach ($_categories as $_category): //第一级遍历,所有一级分类的展示?>
<?php if($_category->getIsActive()): ?>
<?php $i++; ?>
<li>
<a href=”<?php echo Mage::getBlockSingleton(‘catalog/navigation’)->getCategoryUrl($_category) ?>”>
<span>
<?php echo Mage::getBlockSingleton(‘catalog/navigation’)->htmlEscape($_category->getName()) ?>
</span>
</a>
<?php if($_category->hasChildren()): //判断该分类是否有子分类?>
<ul>
<?php $ids = $_category->getChildren(); ?>
<?php $subCategories = Mage::getModel(‘catalog/category’)->getCollection(); ?>
<?php $subCategories->getSelect()->where(“e.entity_id in ($ids)”); ?>
<?php $subCategories->addAttributeToSelect(‘name’); ?>
<?php $subCategories->load(); ?>
<?php $subCount = is_array($subCategories)?count($subCategories): $subCategories->count(); ?>
<?php $j=0;foreach ($subCategories as $item): //如果有子分类,则进行第二级遍历,展示该分类下所有子分类?>
<?php $j++; ?>
<li>
<a href=”<?php echo Mage::getBlockSingleton(‘catalog/navigation’)->getCategoryUrl($item) ?>”>
<span><?php echo $item->getName(); ?></span>
</a>
</li>
<?php endforeach ?>
</ul>
<?php endif; ?>
</li>
<?php endif; ?>
<?php endforeach ?>
</ul>
</div>
<?php endif; ?>
</div>
这个例子中只涵盖了两级分类的实现,大概可以满足大多数网站菜单的需求。经过添加CSS以及代码优化之后,页面上的显示就会如我们所想的那样了。
以上。
(责任编辑:好模板) |
------分隔线----------------------------