有很多的人都比较喜欢在页面的左侧栏添加Magento网站的产品分类菜单,那应该怎么样添加上去的呢?下面是在网上找到的一种方法,是三层架构的显示,如果样式不合适的话可以自己修改CSS。
步骤 I.编辑layout/catalog.xml
在<default>标签下,加入如下代码
- <reference name="left">
- <block type="catalog/navigation" name="catalog.vertnav" template="catalog/navigation/vert_nav.phtml" />
- </reference>
- <reference name="left">
- <block type="catalog/navigation" name="catalog.vertnav" template="catalog/navigation/vert_nav.phtml" />
- </reference>
|
步骤II. 在 template/catalog/navigation/目录下创建一个名为vert_nav.phtml 的文件,代码如下:
- <div class="vertical-nav-container box base-mini">
- <div id="vertical-nav">
- <div class="head">
- <h4><?php echo $this->__('Categories') ?></h4>
- </div>
- <ul id="nav_vert">
- <?php foreach ($this->getStoreCategories() as $_categoryNode): ?>
- <?php $open = $this->isCategoryActive($_categoryNode); ?>
- <?php $hasChildren = $_categoryNode->hasChildren(); ?>
- <li>
- <a href="<?php echo $this->getCategoryUrl($_categoryNode); ?>"<?php if($open) { echo ' class="open"'; } ?><?php if($hasChildren) { echo ' class="potential"'; } ?> >
- <?php if($hasChildren&&$open) { echo '- '; } elseif($hasChildren) { echo '+ '; }else{ echo ' '; }?><?php echo $_categoryNode->getName();?>
- </a>
- <?php if ($open && $hasChildren): ?>
- <ul>
- <?php foreach ($_categoryNode->getChildren() as $sonCategoryNode): ?>
- <?php $subCat = Mage::getModel('catalog/category')->load($sonCategoryNode); ?>
- <?php $open = $this->isCategoryActive($subCat); ?>
- <?php $hasChildren = $subCat->hasChildren(); ?>
- <li>
- <a href="<?php echo $this->getCategoryUrl($subCat); ?>"<?php if($open) { echo ' class="subopen"'; } ?><?php if($hasChildren) { echo ' class="potential"'; } ?><?php if(!$hasChildren&&$open) { echo ' class="final"'; } ?> >
- <?php if($hasChildren&&$open) { echo '- '; } elseif($hasChildren) { echo '+ '; }?><?php echo $subCat->getName(); ?>
- </a>
- <?php if ($open && $hasChildren): ?>
- <ul>
- <?php foreach ($sonCategoryNode->getChildren() as $grandsonCategoryNode): ?>
- <?php $subsubCat = Mage::getModel('catalog/category')->load($grandsonCategoryNode); ?>
- <?php $open = $this->isCategoryActive($subsubCat) ?>
- <?php $hasChildren = $grandsonCategoryNode->hasChildren(); ?>
- <li>
- <a href="<?php echo $this->getCategoryUrl($subsubCat); ?>" <?php if($open) { echo ' class="final"'; } ?>>
- <?php if($hasChildren) { echo '+ '; }?><?php echo $subsubCat->getName(); ?>
- </a>
- </li>
- <?php endforeach; ?>
- </ul>
- <?php endif; ?>
- </li>
- <?php endforeach; ?>
- </ul>
- <?php endif; ?>
- </li>
- <?php endforeach ?>
- </ul>
- </div>
- </div>
- <div class="vertical-nav-container box base-mini">
- <div id="vertical-nav">
- <div class="head">
- <h4><?php echo $this->__('Categories') ?></h4>
- </div>
- <ul id="nav_vert">
- <?php foreach ($this->getStoreCategories() as $_categoryNode): ?>
- <?php $open = $this->isCategoryActive($_categoryNode); ?>
- <?php $hasChildren = $_categoryNode->hasChildren(); ?>
- <li>
- <a href="<?php echo $this->getCategoryUrl($_categoryNode); ?>"<?php if($open) { echo ' class="open"'; } ?><?php if($hasChildren) { echo ' class="potential"'; } ?> >
- <?php if($hasChildren&&$open) { echo '- '; } elseif($hasChildren) { echo '+ '; }else{ echo ' '; }?><?php echo $_categoryNode->getName();?>
- </a>
- <?php if ($open && $hasChildren): ?>
- <ul>
- <?php foreach ($_categoryNode->getChildren() as $sonCategoryNode): ?>
- <?php $subCat = Mage::getModel('catalog/category')->load($sonCategoryNode); ?>
- <?php $open = $this->isCategoryActive($subCat); ?>
- <?php $hasChildren = $subCat->hasChildren(); ?>
- <li>
- <a href="<?php echo $this->getCategoryUrl($subCat); ?>"<?php if($open) { echo ' class="subopen"'; } ?><?php if($hasChildren) { echo ' class="potential"'; } ?><?php if(!$hasChildren&&$open) { echo ' class="final"'; } ?> >
- <?php if($hasChildren&&$open) { echo '- '; } elseif($hasChildren) { echo '+ '; }?><?php echo $subCat->getName(); ?>
- </a>
- <?php if ($open && $hasChildren): ?>
- <ul>
- <?php foreach ($sonCategoryNode->getChildren() as $grandsonCategoryNode): ?>
- <?php $subsubCat = Mage::getModel('catalog/category')->load($grandsonCategoryNode); ?>
- <?php $open = $this->isCategoryActive($subsubCat) ?>
- <?php $hasChildren = $grandsonCategoryNode->hasChildren(); ?>
- <li>
- <a href="<?php echo $this->getCategoryUrl($subsubCat); ?>" <?php if($open) { echo ' class="final"'; } ?>>
- <?php if($hasChildren) { echo '+ '; }?><?php echo $subsubCat->getName(); ?>
- </a>
- </li>
- <?php endforeach; ?>
- </ul>
- <?php endif; ?>
- </li>
- <?php endforeach; ?>
- </ul>
- <?php endif; ?>
- </li>
- <?php endforeach ?>
- </ul>
- </div>
- </div>
|
注意上面的代码$this->getStoreCategories()得到的不是Mage_Catalog_Model_Category类的实例,而是Varien_Data_Tree_Node类的实例
步骤III. 在添加到 skin/[yourinterface]/[yourtheme]/css/menu.css 文件里增加下面的代码
现在你已经成功的在Magento页面左边增加分类菜单,进入一个layout有左列显示的Magento页面(如任一产品分类页),你将可能看到下面的效果:
注:如果点击"两岁到三岁"分类,将进入该分类页面,但是该分类显示将不被展开。因为本例只是最多显示三层分类结构
本文参考自:http://www.igocommerce.com/read-htm-tid-14.html
购物车价格规则
你好,Kevin:
对于购物车价格规则,我有一个疑问,由于不能新开一个问题,所以只能在这里提出。
购物车的创建和使用我都基本熟悉了,我的问题是,为什么当购物车价格规则有很多个时,会影响购物过程中将产品加入购物车的速度,有时候甚至出现超时的现象。
我的问题是:
1.购物车中产品的价格是怎么获取的?
2.有没有办法提高网站的速度?
Helen
回复:购物车价格规则
这个有一些是代码层的东西,我也不太清楚。不过规则多了之后肯定是慢的了,因为要判断的条件多了,代码就运行慢了(代码可以看看app\code\core\Mage\SalesRule里面的一些文件)。
如果你想提高速度的话,可以精简一些条件,有的条件可能是可以合并的就合并(这个在以前离散数学学习过,可以看看,呵呵)。
还有本来Magento这个系统运行就不是很快的,不知道新版本中的Mage Compiler功能能提高多少速度呢。