ECSHOP首页显示最新订单交易滚动功能【ECSHOP二次开发】

分类:ECSHOP商城首页修改 来源: http://www.ecshopjcw.com 时间:2013-06-29

我们想要显示的无非就是什么人在什么时间购买了什么东西,这样分析下来我们需要去从数据库读取出来这来信息。从网上找到ecshop的数据字典,看了看 和咱们相关的表有三个ecs_order_info,ecs_order_goods,ecs_users,分别存储了订单信息,订单对应的商品信息和购买商品的用户信息。这三个表同 user_id,order_id和goods_id三个key来联系,下面我们要写出sql语句从中取出我们需要的那些信息,sql语句如下:

    SELECT ecs_users.user_name, ecs_order_goods.goods_id,
                ecs_order_goods.goods_name, order_info.add_time
                FROM ecs_users, 
                (
                    SELECT order_id, user_id, add_time
                    FROM ecs_order_info
                    ORDER BY ecs_order_info.add_time DESC 
                    LIMIT 0 , 20
                ) AS order_info, 
                ecs_order_goods
                WHERE order_info.order_id = ecs_order_goods.order_id
                AND order_info.user_id = ecs_users.user_id;

上面语句的意思从ecs_order_info里面提取前20个交易,然后根据order_id,goods_id和user_id的关联来获取用户名、商品名、商品id和订单时间。搞定了sql语句, 下面我们就要按照ecshop的模式来写个函数,这个函数从通过数据库获取sql语句的内容,然后把这个sql的record封装到一个array里面,传给smarty模板来使用。 下面给出代码,大家参考一下:

    /**
             * 调用获取最新购买者和物品檠?         *
             * @access  private
             * @return  array
             */
            function index_get_recent_buy_query()
            {
                $sql = 'SELECT ecs_users.user_name, ecs_order_goods.goods_id,
                         ecs_order_goods.goods_name, ecs_order_info.add_time
                        FROM ecs_users, 
                        (
                            SELECT order_id, user_id, add_time
                            FROM ecs_order_info
                            ORDER BY ecs_order_info.add_time DESC 
                            LIMIT 0 , 20
                        ) AS ecs_order_info, 
                        ecs_order_goods
                        WHERE ecs_order_info.order_id = ecs_order_goods.order_id
                        AND ecs_order_info.user_id = ecs_users.user_id;';
     
                $all = $GLOBALS['db']->getAll($sql);
     
                $arr = array();
     
                foreach ($all AS $idx => $row)
                {
                    $arr[$idx]['username']  = $row['user_name'];
                    $arr[$idx]['goodName']  = $row['goods_name'];
                    $arr[$idx]['goodID']    = $row['goods_id'];
                    $arr[$idx]['add_time']  = local_date(
                      $GLOBALS['_CFG']['date_format'], $row['add_time']);
                }
     
                return $arr;
            }

上面代码使用了$GLOBALS['db']->getAll($sql);来获取数据库里面记录,这个db是在init.php里面系统初始化加载好的全局变量,他负责和数据库交互,获取 数据等功能。有时间我写几篇ecshop代码分析的文章,详细讲解一下ecshop的初始化过程,大家就可以了解ecshop高质量的代码了。下面的那个foreach做的而 工作其实就是把数据封装到array,smarty在模板处理时数组友好的。上面只是获取了array,下面的语句是赋值array到smarty模板”

$smarty->assign('recent_buys',     index_get_recent_buy_query());//获取最新的购买者信息

把这句话加到index.php的类似的地方就可以,基本上在80多行,ecshop集中模板赋值的地方。在面我们来看看赋过去的值smarty模板是怎么用的。

 

我们建立一个BusinessActivities.lbi来放我们的smarty模板内容。下面是代码:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!--{if $recent_buys}-->
<ul> 
{foreach from=$recent_buys item=buy_info}
<li>· {$buy_info.username} 在 {$buy_info.add_time}
买了<a href='goods.php?id={$buy_info.goodID}'> {$buy_info.goodName}</a></li>
{/foreach}
</ul>
<!-- {/if} -->

 

 

 

大家注意看上面的是来说明你的模板内容基本信息的,我这里是utf8,如果你是gbk,要改成gbk哦。 是和我们上面php程序里面的$smarty->assign(’recent_buys’, index_get_recent_buy_query())对应的,若果你给recent_buys赋值, 并且这个值不为空或者0的话才显示咱们的模板内容。我们重点看,foreach是smarty模板内置函数,其 主要作用是遍历传入的数组,然后生成内容,类似于其他语言里面的foreach。这句话就是遍历recent_buys,然后把每次遍历的项做buy_info,其实这个buy_info 就是咱们数据的2维数组的第二维了。你可以直接用{$buy_info.goodName}这种形式来调用你数组传入的内容。用smarty模板绝对的数据和现实分离,很爽的。

下面你在你需要显示的地方加入 就可以显示了。

你可能还会喜欢

ecshop
ecshop下载 ecshop模板 ecshop多用户 ecshop免费模板
ecshop二次开发手册
ecshop二次开发 ecshop模板教程 ecshop微信配置
网站建设制作
网站源码下载 网站建设教程 网站SEO优化 网站制作软件
ecshop教程网
ecshop模板定制 常见问题 ecshop二次开发. 关于我们
服务热线 151 059 55077 模板客服
151 059 55077 二次开发

ICP备案证书号:京ICP备16029555号-9

可信网站 诚信网站 实名验证网站 实名网站 360网站安全检测认证