ECSHOP二次开发:首页循环调用子分类商品,并实现点击Tab页切换分类商品

作者:我就是个世界 发表于:2013-06-24
例子:首页实现显示子分类商品,并实现点击Tab页切换分类商品(非AJAX)开始:  
1. 打开调试开关    文件地址:include/cls_template.php 找到 :    
[code]function _eval($content)[/code]
    函数体第一行增加: echo($content);   改写调试完毕后在注释掉。

2. 修改goods获取函数,以便显示子分类。  
文件:include/cls_goods.php 找到函数:function assign_cat_goods,在
[code]$cat['id'] = $cat_id;[/code]
后增加一行:
[code]$cat['cat_id'] = get_child_tree($cat_id);// 调用子分类信息[/code]

3.修改模板 cat_goods.lbi ,显示子分类并调用子商品
[code]
<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>
[/code]

效果如下: 在实际使用中,发现两个bug:1.后台未设置显示大类时,会出现空白分类。2.当存在两个大类显示的时候,第二个大类子分类显示的都是第一个大类的最后一个分类的内容。改正如下:1. 增加当前大分类ID是否有值的判断    增加位置:商品分类模板第一行cat_goods.lbi    代码:

2. 修改获取当前ID代码。代码如下:
      //这里循环获取当前商品分类ID,传入获取商品信息集合      
                    $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

分享:

扫一扫在手机阅读、分享本文

请发表您的评论