ecshop添加新功能ecshop模板堂感觉无外乎就是两个地方的修改,显示的要修改模板,为了方便下次升级,最好都做成lbi,下次升级了直接把lbi拷进去, 然后稍微修改一下dwt的模板就行了。而对于程序部分的修改,ecshop模板堂建议做一个自己的目录,比如dev,然后把自己加的每个功能做成一个php文件放到 dev目录里面,在需要的时候在原来的ecshop的php里面include或者require进来就行了。这样下次系统升级目录一拷,然后在该 include的地方include 一下就ok了,省时省心。当然,ecshop模板堂个人建议你维护一个表,用来保存你都在哪些地方做过哪些修改,以方便下次升级的使用。下面ecshop模板堂从模板和程序两个 方面说一下需要修改什么地方。
一、程序层面修改
ecshop模板堂想要显示的无非就是什么人在什么时间购买了什么东西,这样分析下来ecshop模板堂需要去从数据库读取出来这来信息。 从网上找到ecshop的数据字典,看了看 和咱们相关的表有三个ecs_order_info,ecs_order_goods,ecs_users,分别存储了订单信息,订单对应的商品信息和购 买商品的用户信息。这三个表同 user_id,order_id和goods_id三个key来联系,下面ecshop模板堂要写出sql语句从中取出ecshop模板堂需要的那些信息,sql语句如下:
SELECT ecs_users.user_name, ecs_order_goods.goods_id,
|
上面语句的意思从ecs_order_info里面提取前20个交易,然后根据order_id,goods_id和user_id的关联来获取用户名、 商品名、商品id和订单时间。搞定了sql语句, 下面ecshop模板堂就要按照ecshop的模式来写个函数,这个函数从通过数据库获取sql语句的内容,然后把这个sql的record封装到一个array里面, 传给smarty模板来使用。 下面给出代码,大家参考一下:
|
上面代码使用了$GLOBALS['db']->getAll($sql);来获取数据库里面记录,这个db是在init.php里面系统初始化加 载好的全局变量,他负责和数据库交互,获取 数据等功能。有时间ecshop模板堂写几篇ecshop代码分析的文章,详细讲解一下ecshop的初始化过程,大家就可以了解ecshop高质量的代码了。下面的那个 foreach做的而 工作其实就是把数据封装到array,smarty在模板处理时数组友好的。上面只是获取了array,下面的语句是赋值array到smarty模板”
|
把这句话加到index.php的类似的地方就可以,基本上在80多行,ecshop集中模板赋值的地方。在面ecshop模板堂来看看赋过去的值smarty模板是怎么用的。
二、模板层面的修改
ecshop模板堂建立一个BusinessActivities.lbi来放ecshop模板堂的smarty模板内容。下面是代码,看完代码ecshop模板堂来分析:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <!--{if $invoice_list}--> <style type="text/css"> .boxCenterList form{display:inline;} .boxCenterList form a{color:#404040; text-decoration:underline;} </style> <div class="box"> <div class="box_1"> <h3><span>{$lang.sale_activities}</span></h3> <div class="boxCenterList"> <MARQUEE onmouseover=this.stop() onmouseout=this.start() scrollAmount=1 direction=up height=155px> <!-- 发货单查询{foreach from=$recent_buys item=buy_info} --> <image src='images/speaker.gif'> {$buy_info.username} 在 {$buy_info.add_time} 买了 <a href='goods.php?id={$buy_info.goodID}'> {$buy_info.goodName}</a><br> <div class="blank"></div> <!-- 结束发货单查询{/foreach}--> </MARQUEE> </div> </div> </div> <div class="blank5"></div> <!-- {/if} --> |
下面你在你需要显示的地方加入 就可以显示了。
提示:sql调用的时候一定要注意表名要换成你自己的表名