轻源码

  • QingYuanMa.com
  • 全球最大的互联网技术和资源下载平台
搜索
一起源码网 门户 ECShop网店 查看主题

ECSHOP首页滚动显示最新订单

发布者: chense | 发布时间: 2018-8-20 23:23| 查看数: 3862| 评论数: 1|帖子模式

添  加新功能我感觉无外乎就是两个地方的修改,显示的要修改模板,为了方便下次升级,最好都做成lbi,下次升级了直接把lbi拷进去,   然后稍微修改一下dwt的模板就行了。而对于程序部分的修改,我建议做一个自己的目录,比如dev,然后把自己加的每个功能做成一个php文件放到   dev目录里面,在需要的时候在原来的的php里面include或者require进来就行了。这样下次系统升级目录一拷,然后在该   include的地方include   一下就ok了,省时省心。当然,我个人建议你维护一个表,用来保存你都在哪些地方做过哪些修改,以方便下次升级的使用。下面我从模板和程序两个   方面说一下需要修改什么地方。
一、程序层面修改
我们想要显示的无非就是什么人在什么时间购买了什么东西,这样分析下来我们需要去从数据库读取出来这来。  从网上找到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, 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;';
            
                        $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模板内容。下面是代码,看完代码我来分析:

            
            
            .boxCenterList form{display:inline;}
            .boxCenterList form a{color:#404040; text-decoration:underline;}
            
            
            
              {$lang.sale_activities}


              
              
               
                 {$buy_info.username} 在 {$buy_info.add_time} 买了
               

            
               

               
                  
              

            

            

            

            

            

大家注意看上面的是来说明你的模板内容基本信息的,我这里是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模板绝对的数  据和现实分离,很爽的。
下面你在你需要显示的地方加入 就可以显示了。
提示:sql调用的时候一定要注意表名要换成你自己的表名

最新评论

伴我走@ 发表于 2022-7-9 20:21
怎么在源代码里面加入音乐

浏览过的版块

轻源码让程序更轻更快

QingYuanMa.com

工作时间 周一至周六 8:00-17:30

侵权处理

客服QQ点击咨询

关注抖音号

定期抽VIP

Copyright © 2016-2021 https://www.171739.xyz/ 滇ICP备13200218号

快速回复 返回顶部 返回列表