如何在Magento页面左边增加分类菜单

有很多的人都比较喜欢在页面的左侧栏添加Magento网站的产品分类菜单,那应该怎么样添加上去的呢?下面是在网上找到的一种方法,是三层架构的显示,如果样式不合适的话可以自己修改CSS。

步骤 I.编辑layout/catalog.xml
在<default>标签下,加入如下代码

  1. <reference name="left">  
  2.   <block type="catalog/navigation" name="catalog.vertnav" template="catalog/navigation/vert_nav.phtml" />  
  3. </reference>  
  4. <reference name="left">
  5.   <block type="catalog/navigation" name="catalog.vertnav" template="catalog/navigation/vert_nav.phtml" />
  6. </reference>

步骤II. 在 template/catalog/navigation/目录下创建一个名为vert_nav.phtml 的文件,代码如下:

  1. <div class="vertical-nav-container box base-mini">  
  2.   <div id="vertical-nav">  
  3.    <div class="head">  
  4.      <h4><?php echo $this->__('Categories') ?></h4>  
  5.    </div>  
  6.    <ul id="nav_vert">  
  7.      <?php foreach ($this->getStoreCategories() as $_categoryNode): ?>  
  8.      <?php $open = $this->isCategoryActive($_categoryNode); ?>  
  9.      <?php $hasChildren = $_categoryNode->hasChildren(); ?>  
  10.       <li>  
  11.         <a href="<?php echo $this->getCategoryUrl($_categoryNode); ?>"<?php if($open) { echo ' class="open"'; } ?><?php if($hasChildren) { echo ' class="potential"'; } ?> >  
  12.          <?php if($hasChildren&&$open) { echo '- '; } elseif($hasChildren) { echo '+ '; }else{ echo ' '; }?><?php echo $_categoryNode->getName();?>  
  13.         </a>  
  14.         <?php if ($open && $hasChildren): ?>  
  15.         <ul>  
  16.          <?php foreach ($_categoryNode->getChildren() as $sonCategoryNode): ?>  
  17.          <?php $subCat = Mage::getModel('catalog/category')->load($sonCategoryNode); ?>  
  18.          <?php $open = $this->isCategoryActive($subCat); ?>  
  19.          <?php $hasChildren = $subCat->hasChildren(); ?>  
  20.          <li>  
  21.            <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"'; } ?> >  
  22.             <?php if($hasChildren&&$open) { echo '- '; } elseif($hasChildren) { echo '+ '; }?><?php echo $subCat->getName(); ?>  
  23.            </a>  
  24.            <?php if ($open && $hasChildren): ?>  
  25.             <ul>  
  26.               <?php foreach ($sonCategoryNode->getChildren() as $grandsonCategoryNode): ?>  
  27.                <?php $subsubCat = Mage::getModel('catalog/category')->load($grandsonCategoryNode); ?>  
  28.                <?php $open = $this->isCategoryActive($subsubCat) ?>  
  29.                <?php $hasChildren = $grandsonCategoryNode->hasChildren(); ?>  
  30.                <li>  
  31.                  <a href="<?php echo $this->getCategoryUrl($subsubCat); ?>" <?php if($open) { echo ' class="final"'; } ?>>  
  32.                   <?php if($hasChildren) { echo '+ '; }?><?php echo $subsubCat->getName(); ?>  
  33.                  </a>  
  34.                </li>  
  35.               <?php endforeach; ?>  
  36.             </ul>  
  37.            <?php endif; ?>  
  38.          </li>  
  39.          <?php endforeach; ?>  
  40.         </ul>  
  41.         <?php endif; ?>  
  42.       </li>  
  43.      <?php endforeach ?>  
  44.    </ul>  
  45.   </div>  
  46. </div>  
  47.     <div class="vertical-nav-container box base-mini">
  48.       <div id="vertical-nav">
  49.        <div class="head">
  50.          <h4><?php echo $this->__('Categories') ?></h4>
  51.        </div>
  52.        <ul id="nav_vert">
  53.          <?php foreach ($this->getStoreCategories() as $_categoryNode): ?>
  54.          <?php $open = $this->isCategoryActive($_categoryNode); ?>
  55.          <?php $hasChildren = $_categoryNode->hasChildren(); ?>
  56.           <li>
  57.             <a href="<?php echo $this->getCategoryUrl($_categoryNode); ?>"<?php if($open) { echo ' class="open"'; } ?><?php if($hasChildren) { echo ' class="potential"'; } ?> >
  58.              <?php if($hasChildren&&$open) { echo '- '; } elseif($hasChildren) { echo '+ '; }else{ echo ' '; }?><?php echo $_categoryNode->getName();?>
  59.             </a>
  60.             <?php if ($open && $hasChildren): ?>
  61.             <ul>
  62.              <?php foreach ($_categoryNode->getChildren() as $sonCategoryNode): ?>
  63.              <?php $subCat = Mage::getModel('catalog/category')->load($sonCategoryNode); ?>
  64.              <?php $open = $this->isCategoryActive($subCat); ?>
  65.              <?php $hasChildren = $subCat->hasChildren(); ?>
  66.              <li>
  67.                <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"'; } ?> >
  68.                 <?php if($hasChildren&&$open) { echo '- '; } elseif($hasChildren) { echo '+ '; }?><?php echo $subCat->getName(); ?>
  69.                </a>
  70.                <?php if ($open && $hasChildren): ?>
  71.                 <ul>
  72.                   <?php foreach ($sonCategoryNode->getChildren() as $grandsonCategoryNode): ?>
  73.                    <?php $subsubCat = Mage::getModel('catalog/category')->load($grandsonCategoryNode); ?>
  74.                    <?php $open = $this->isCategoryActive($subsubCat) ?>
  75.                    <?php $hasChildren = $grandsonCategoryNode->hasChildren(); ?>
  76.                    <li>
  77.                      <a href="<?php echo $this->getCategoryUrl($subsubCat); ?>" <?php if($open) { echo ' class="final"'; } ?>>
  78.                       <?php if($hasChildren) { echo '+ '; }?><?php echo $subsubCat->getName(); ?>
  79.                      </a>
  80.                    </li>
  81.                   <?php endforeach; ?>
  82.                 </ul>
  83.                <?php endif; ?>
  84.              </li>
  85.              <?php endforeach; ?>
  86.             </ul>
  87.             <?php endif; ?>
  88.           </li>
  89.          <?php endforeach ?>
  90.        </ul>
  91.       </div>
  92.     </div>

注意上面的代码$this->getStoreCategories()得到的不是Mage_Catalog_Model_Category类的实例,而是Varien_Data_Tree_Node类的实例

步骤III. 在添加到 skin/[yourinterface]/[yourtheme]/css/menu.css 文件里增加下面的代码

  1. #vertical-nav ul {  
  2.   list-style-type: none; /* get rid of the bullets */  
  3.   padding:0; /* no padding */  
  4.   margin:0; /* no margin for IE either */  
  5. }  
  6.   
  7. #vertical-nav ul li {  
  8.   margin: 0;  
  9.   padding: 0;  
  10.   display:block;  
  11.   margin-top: 1px; /* lines */  
  12. }  
  13.   
  14. #vertical-nav ul ul li a,#vertical-nav ul li{  
  15.   background-color: #FFFFFF;  
  16. }  
  17.   
  18. #vertical-nav ul li a {  
  19.   display: block;  
  20.   padding: 3px 3px 3px 23px;  
  21.   margin:0;  
  22.   text-decoration: none;  
  23.   height:15px; /* hint for IE, alternatively remove whitespace from HTML */  
  24.   background-color: #CCCCCC;  
  25. }  
  26.   
  27. #vertical-nav ul li .open, #vertical-nav .activesubsub, #vertical-nav .subopen {  
  28.   font-weight: bolder;  
  29.   text-decoration: underline;  
  30.   color:#000000  
  31. }  
  32.   
  33. #vertical-nav .final{  
  34.   background-color:#ECECEC;  
  35. }  
  36.   
  37. #vertical-nav ul ul li a {  
  38.   margin-left: 20px;  
  39. }  
  40.   
  41. #vertical-nav ul ul ul li a {  
  42.   margin-left: 40px; /* indent level 2 */  
  43. }  
  44.   
  45. #vertical-nav a {  
  46.   color:#999999;  
  47. }  
  48.   
  49. #vertical-nav a:hover {  
  50.   color:#666666;  
  51. }  
  52. #vertical-nav ul li ul li a {  
  53.   border-top-width: thin;  
  54.   border-bottom-width: thin;  
  55.   border-top-style: dotted;  
  56.   border-bottom-style: dotted;  
  57.   border-top-color: #CCCCCC;  
  58.   border-bottom-color: #CCCCCC;  
  59.   margin-bottom:0px;  
  60.   margin-top:0px;  
  61. }  
  62.   
  63. #vertical-nav ul li ul li {  
  64.   margin-bottom:0px;  
  65.   margin-top:0px;  
  66. }  
  67. #vertical-nav ul {
  68.   list-style-type: none; /* get rid of the bullets */
  69.   padding:0; /* no padding */
  70.   margin:0; /* no margin for IE either */
  71. }
  72. #vertical-nav ul li {
  73.   margin: 0;
  74.   padding: 0;
  75.   display:block;
  76.   margin-top: 1px; /* lines */
  77. }
  78. #vertical-nav ul ul li a,#vertical-nav ul li{
  79.   background-color: #FFFFFF;
  80. }
  81. #vertical-nav ul li a {
  82.   display: block;
  83.   padding: 3px 3px 3px 23px;
  84.   margin:0;
  85.   text-decoration: none;
  86.   height:15px; /* hint for IE, alternatively remove whitespace from HTML */
  87.   background-color: #CCCCCC;
  88. }
  89. #vertical-nav ul li .open, #vertical-nav .activesubsub, #vertical-nav .subopen {
  90.   font-weight: bolder;
  91.   text-decoration: underline;
  92.   color:#000000
  93. }
  94. #vertical-nav .final{
  95.   background-color:#ECECEC;
  96. }
  97. #vertical-nav ul ul li a {
  98.   margin-left: 20px;
  99. }
  100. #vertical-nav ul ul ul li a {
  101.   margin-left: 40px; /* indent level 2 */
  102. }
  103. #vertical-nav a {
  104.   color:#999999;
  105. }
  106. #vertical-nav a:hover {
  107.   color:#666666;
  108. }
  109. #vertical-nav ul li ul li a {
  110.   border-top-width: thin;
  111.   border-bottom-width: thin;
  112.   border-top-style: dotted;
  113.   border-bottom-style: dotted;
  114.   border-top-color: #CCCCCC;
  115.   border-bottom-color: #CCCCCC;
  116.   margin-bottom:0px;
  117.   margin-top:0px;
  118. }
  119. #vertical-nav ul li ul li {
  120.   margin-bottom:0px;
  121.   margin-top:0px;
  122. }

现在你已经成功的在Magento页面左边增加分类菜单,进入一个layout有左列显示的Magento页面(如任一产品分类页),你将可能看到下面的效果:
  

注:如果点击"两岁到三岁"分类,将进入该分类页面,但是该分类显示将不被展开。因为本例只是最多显示三层分类结构

本文参考自:http://www.igocommerce.com/read-htm-tid-14.html

购物车价格规则

你好,Kevin:

对于购物车价格规则,我有一个疑问,由于不能新开一个问题,所以只能在这里提出。

购物车的创建和使用我都基本熟悉了,我的问题是,为什么当购物车价格规则有很多个时,会影响购物过程中将产品加入购物车的速度,有时候甚至出现超时的现象。

我的问题是:
1.购物车中产品的价格是怎么获取的?
2.有没有办法提高网站的速度?

Helen

回复:购物车价格规则

这个有一些是代码层的东西,我也不太清楚。不过规则多了之后肯定是慢的了,因为要判断的条件多了,代码就运行慢了(代码可以看看app\code\core\Mage\SalesRule里面的一些文件)。
如果你想提高速度的话,可以精简一些条件,有的条件可能是可以合并的就合并(这个在以前离散数学学习过,可以看看,呵呵)。
还有本来Magento这个系统运行就不是很快的,不知道新版本中的Mage Compiler功能能提高多少速度呢。