A-A+

ecshop怎样调用产品分类下的销售排行榜

2015年09月22日 PHP开源系统 评论 1 条 阅读 147 views 次

ecshop 做的系统站点如果分类很多也很详细的话,调出每个分类下各自的销售商品排行榜是很有必要的,比如说手机分类下卖得最好的手机是哪几款,电脑分类下卖得最好的电脑有哪些,这样来分类的话,就不会很凌乱了,下面夏日博客就来说下具体的方法。

1.打开根目录下的 category.php,添加如下函数:

  1. /** 
  2. * 调用产品分类下的销售排行榜 
  3. * 
  4. * @access  public 
  5. * @param   string  $cats   查询的分类ID 
  6. * @return  array 
  7. */  
  8. function get_pro_top10($cats = '1')  
  9. {  
  10.     $where = !emptyempty($cats) ? "AND (g.cat_id = $cats OR " . get_extension_goods($cats) . ") " : '';  
  11.     /* 排行统计的时间 */  
  12.     switch ($GLOBALS['_CFG']['top10_time'])  
  13.     {  
  14.         case 1: // 一年  
  15.             $top10_time = "AND o.order_sn >= '" . date('Ymd', gmtime() - 365 * 86400) . "'";  
  16.         break;  
  17.         case 2: // 半年  
  18.             $top10_time = "AND o.order_sn >= '" . date('Ymd', gmtime() - 180 * 86400) . "'";  
  19.         break;  
  20.         case 3: // 三个月  
  21.             $top10_time = "AND o.order_sn >= '" . date('Ymd', gmtime() - 90 * 86400) . "'";  
  22.         break;  
  23.         case 4: // 一个月  
  24.             $top10_time = "AND o.order_sn >= '" . date('Ymd', gmtime() - 30 * 86400) . "'";  
  25.         break;  
  26.         default:  
  27.             $top10_time = '';  
  28.     }  
  29.     $sql = 'SELECT g.goods_id, g.goods_name, g.shop_price, g.goods_thumb, SUM(og.goods_number) as goods_number ' .  
  30.            'FROM ' . $GLOBALS['ecs']->table('goods') . ' AS g, ' .  
  31.                 $GLOBALS['ecs']->table('order_info') . ' AS o, ' .  
  32.                 $GLOBALS['ecs']->table('order_goods') . ' AS og ' .  
  33.            "WHERE g.is_on_sale = 1 AND g.is_alone_sale = 1 AND g.is_delete = 0 $where $top10_time " ;  
  34.     //判断是否启用库存,库存数量是否大于0  
  35.     if ($GLOBALS['_CFG']['use_storage'] == 1)  
  36.     {  
  37.         $sql .= " AND g.goods_number > 0 ";  
  38.     }  
  39.     $sql .= ' AND og.order_id = o.order_id AND og.goods_id = g.goods_id ' .  
  40.            "AND o.order_status = '" . OS_CONFIRMED . "' " .  
  41.            "AND (o.pay_status = '" . PS_PAYED . "' OR o.pay_status = '" . PS_PAYING . "') " .  
  42.            "AND (o.shipping_status = '" . SS_SHIPPED . "' OR o.shipping_status = '" . SS_RECEIVED . "') " .  
  43.            'GROUP BY g.goods_id ORDER BY goods_number DESC, g.goods_id DESC LIMIT ' . $GLOBALS['_CFG']['top_number'];  
  44.     $arr = $GLOBALS['db']->getAll($sql);  
  45.     for ($i = 0, $count = count($arr); $i < $count$i++)  
  46.     {  
  47.         $arr[$i]['short_name'] = $GLOBALS['_CFG']['goods_name_length'] > 0 ?  
  48.                                     sub_str($arr[$i]['goods_name'], $GLOBALS['_CFG']['goods_name_length']) : $arr[$i]['goods_name'];  
  49.         $arr[$i]['url']        = build_uri('goods', array('gid' => $arr[$i]['goods_id']), $arr[$i]['goods_name']);  
  50.         $arr[$i]['thumb'] = get_image_path($arr[$i]['goods_id'], $arr[$i]['goods_thumb'],true);  
  51.         $arr[$i]['price'] = price_format($arr[$i]['shop_price']);  
  52.     }  
  53.     return $arr;  
  54. }  

2.查找如下代码:

  1. $smarty->assign('top_goods', get_top10()); // 销售排行  

在这句代码下面增加:

  1. $smarty->assign('get_pro_top', get_pro_top10($cat_id));  // 销售排行  

3.模板调用:

以下是以默认模板为例,打开themes/您的模板名称(xiariboke.net)/category.php

  1. <div class="box">  
  2. <div class="box_2">  
  3.   <div class="top10Tit"></div>  
  4.   <div class="top10List clearfix">  
  5.   <!-- {foreach name=top_goods from=$get_pro_top item=goods}-->  
  6.   <ul class="clearfix">  
  7. <img src="../images/top_{$smarty.foreach.top_goods.iteration}.gif" class="iteration" />  
  8. <!-- {if $smarty.foreach.top_goods.iteration<4}-->  
  9.       <li class="topimg">  
  10.       <a href="{$goods.url}"><img src="{$goods.thumb}" alt="{$goods.name|escape:html}" class="samllimg" /></a>  
  11.       </li>  
  12. <!-- {/if} -->    
  13.       <li {if $smarty.foreach.top_goods.iteration<4}class="iteration1"{/if}>  
  14.       <a href="{$goods.url}" title="{$goods.name|escape:html}">{$goods.short_name}</a><br />  
  15.       {$lang.shop_price}<font class="f1">{$goods.price}</font><br />  
  16.       </li>  
  17.     </ul>  
  18.   <!-- {/foreach} -->  
  19.   </div>  
  20. </div>  
  21. </div>  
  22. <div class="blank5"></div>  
标签:

1 条留言  访客:1 条  博主:0 条

  1. 麦子博客

    这个方法正好有需要用到。

给我留言