例子:首页实现显示子分类商品,并实现点击Tab页切换分类商品(非AJAX)

开始:
   1. 打开调试开关
    文件地址:include/cls_template.php 找到 :

 function _eval($content)
 
   函数体第一行增加: echo($content);
   改写调试完毕后在注释掉。
 
2. 修改goods获取函数,以便显示子分类。
   文件:include/cls_goods.php 找到函数:function assign_cat_goods,
在 $cat['id']   = $cat_id; 后增加一行:
$cat['cat_id'] = get_child_tree($cat_id);

// 调用子分类信息。

 
3.修改模板 cat_goods.lbi ,显示子分类并调用子商品
 
<div class="row" style="margin-top:15px;" id="CatGoods">
  <div class="span12">
    <div class="tabbable" style="position:relative;"> 
      <!--   {if $goods_cat.cat_id}   -->   //有子分类
      <ul class="nav nav-tabs" >
        <!--    {foreach from=$goods_cat.cat_id item=rec_cat name=f}--> //显示子分类
        <li <!-- {if $smarty.foreach.f.index eq 0} -->class="active" <!--{/if}-->><a href="#tab{$rec_cat.id}" data-toggle="tab">{$rec_cat.name|escape:html}</a></li>
        <!--    {/foreach}-->
       
      </ul>
<!--      <div align="right" class="more"><a href="{$goods_cat.url}">更多>></a></div>-->
      <div class="tab-content">
      <!--   {foreach from=$goods_cat.cat_id item=rec_cat1 name=f1}-->
//这里循环获取当前商品分类ID,传入获取商品信息集合
       <?php 
               $cid = $this->_var['rec_cat1']['id'];
            $this ->assign('goods_cat_'.$cid, assign_cat_goods($cid, 4));
            $this->assign('cat_goods_nf',$this->_var['cat_goods_'.$cid]);
     ?>
        <div class="tab-pane <!-- {if $smarty.foreach.f1.index eq 0} -->active<!--{/if}-->" id="tab{$rec_cat1.id}">
          <div class="row">
            <!--{foreach from=$cat_goods_nf item=goods}--> //显示商品
            <div class="span3">
              <div class="thumbnail"> <a href="{$goods.url}"><img src="{$goods.thumb}" alt="{$goods.name|escape:html}"></a>
                <div class="thumspan">{$goods.short_name|escape:html}<br />
                市场价:<span style="color:#C30"> <b>{$goods.market_price}</b></span></div>
              </div>
            </div>
            <!--{/foreach}-->       
          </div>
        </div>
        <!--    {/foreach}-->    
      </div>
      <!--    {else}  --> //单个分类,无下级分类
      <ul class="nav nav-tabs" >
        <li class="active"><a href="#tab{$goods_cat.id}" data-toggle="tab">{$goods_cat.name|escape:html}</a></li>
      </ul>
      <div align="right" class="more"><a href="{$goods_cat.url}">更多>></a></div>
      <div class="tab-content">
        <div class="tab-pane active" id="tab{$goods_cat.id}">
          <div class="row">
            <!--{foreach from=$cat_goods item=goods}-->
            <div class="span3">
              <div class="thumbnail"> <a href="{$goods.url}"><img src="{$goods.thumb}" alt="{$goods.name|escape:html}"></a>
                <div class="thumspan">{$goods.short_name|escape:html}<br />
                  市场价:<span style="color:#C30"> <b>{$goods.market_price}</b></span></div>
              </div>
            </div>
            <!--{/foreach}-->
           
          </div>
        </div>
      </div>
      <!--        {/if}    -->
     
    </div>
  </div>
</div>
<script type="text/javascript">divheight("CatGoods");</script>
 
效果如下:
 
在实际使用中,发现两个bug:
1.后台未设置显示大类时,会出现空白分类。
2.当存在两个大类显示的时候,第二个大类子分类显示的都是第一个大类的最后一个分类的内容。
改正如下:
1. 增加当前大分类ID是否有值的判断
    增加位置:商品分类模板第一行cat_goods.lbi
    代码:

<!--   {if not is_null($goods_cat.id) || $goods_cat.id>0}   -->

2. 修改获取当前ID代码。代码如下:

      <!--   {foreach from=$goods_cat.cat_id item=rec_cat1 name=f1 key=curCat}-->
//这里循环获取当前商品分类ID,传入获取商品信息集合
<?php
$cid = $this->_var['curCat']; //改为这个
$this ->assign('goods_cat_'.$cid, assign_cat_goods($cid, 4)); //4表示每个分类显示的商品数量,根据实际情况自己修改
$this->assign('cat_goods_nf',$this->_var['cat_goods_'.$cid]);
?>
注意:这里的foreach中的key表示 集合中的键值,也可以说是主键,一般是集合的ID
 

ECSHOP:首页实现显示子分类商品,并实现点击Tab页切换分类商品的更多相关文章

  1. jquery实现tab页切换显示div

    1.jQuery实现tab切换显示代码实现 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" &q ...

  2. EcShop首页显示特定分类的精品新品热销特价等推荐商品

    EcShop首页显示特定分类的精品新品热销特价等推荐商品 很多大型的B2C商城都有特定分类专区,该分类下的[分类名称].[推荐子分类 或 推荐品牌].[大图片/推荐单品].[推荐商品].[促销商品]. ...

  3. ecshop首页调用某分类下的商品|assign_cat_goods()

    ecshop首页调用分类下的商品其实很简单,也有模板设置那里可以设置,不过那个只可以用cat_goods.lib,不方便,所以我想看看怎么能简单的实现ecshop首页调用分类下的商品 只需要在inde ...

  4. ecshop首页调用指定商品分类下的商品品牌列表

    转之--http://www.16css.com/ecshop/735.html 通过二次开发可以实现ECSHOP首页调用指定分类下的品牌列表. 第一步: 打开根目录下的index.php 在最后面 ...

  5. 如何处理wordpress首页不显示指定分类文章

    如何实现wordpress首页不显示指定分类文章,要实现这一步,首先必须找到需要屏蔽的该目录的id,那么如何查看wordpress的分类id呢?有两种方法: 通过wordpress后台查看分类的ID ...

  6. magento -- 给后台分类管理页的分类商品加一栏商品类型

    当使用特定分类来控制前台的商品显示时,后台分类管理页的分类商品只有编号.名称.SKU和价格这几栏,选择特定商品相当不便. 可以在这里多加一栏商品类型用来筛选商品,添加的方式很简单. 打开文件/app/ ...

  7. ecshop首页调用团购信息产品购买人数

    当我们在ecshop后台录入ecshop的团购信息之后,我们在ecshop的前台首页index.php里面,可以看到他能调用ecshop的团购商品信息,其中就包括团购商品的一些价格信息.但是如何在ec ...

  8. Hexo瞎折腾系列(4) - 站点首页不显示文章全文

    文章摘要设置 打开主题配置文件 _config.yml 文件,找到如下: # Automatically Excerpt. Not recommend. # Please use <!-- mo ...

  9. {二逼小青年的记事簿}为什么treelist不会显示子节点的文字?

    <TreeView Name="treeView" DockPanel.Dock="Left" MinWidth="200" > ...

随机推荐

  1. Kinetic使用注意点--ellipse

    new Ellipse(config) 参数: config:包含所有配置项的对象. { radius: "半径,可以用数字a.数组[a,b]或对象{x:a,y:b}来表示" } ...

  2. c# 模拟表单提交,post form 上传文件、大数据内容

    表单提交协议规定:要先将 HTTP 要求的 Content-Type 设为 multipart/form-data,而且要设定一个 boundary 参数,这个参数是由应用程序自行产生,它会用来识别每 ...

  3. Swift与Objective-C的对比

    WWDC 2014上苹果再次惊世骇俗的推出了新的编程语言Swift 雨燕, 这个消息会前没有半点风声的走漏.消息发布当时,会场一片惊呼,相信全球看直播的码农们当时也感觉脑袋被敲了一记闷棍吧.于是熬夜学 ...

  4. (转)使用Migrations更新数据库结构(Code First )

    原文地址:http://blog.csdn.net/luoyeyu1989/article/details/8275237 背景 code first起初当修改model后,要持久化至数据库中时,总要 ...

  5. EXTJS 资料 combo 点一次触发一次

    { xtype: 'combo', id: 'ApplyToModel', name: 'ApplyToModel', store: comStoreApplyToModel, valueField: ...

  6. AOP和IOC个人理解

    14:18 2014/5/5 IOC inversion of control 控制反转  将new对象的权力由调用者转移到spring容器(即xml文件),Struts2与Spring整合(scop ...

  7. 在DataTable中执行DataTable.Select("条件")

     .在DataTable中执行DataTable.Select("条件")返回DataTable:  // <summary> // 执行DataTable中的查询返回 ...

  8. windows server 2008 r2电脑历史操作记录

    1.看计算机哪天运行过.    在系统盘下的Windows\Tasks文件夹下找到文件SCHEDLGU.TXT. 2.看你最近打开过什么文件(非程序)或者文件夹    开始-->运行--> ...

  9. 在系统方法中调用navigationController的标准写法

    在系统方法中调用navigationController的标准写法 -(void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animat ...

  10. Android Studio 单刷《第一行代码》系列 04 —— Activity 相关

    前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...