----------------------------------------------------------------------------------------------------------------------------------------------------------------------------模板堂教程:初级教程功能了解介绍安装后台管理程序分析重要表执行流程底层库js库分析练手功能去除标题[PHP]去除版权标志[js]最新评论[PHP+模板]二次开发自定义title[php]email登陆[php]多商品倒计时[js]模板开发1.1ecshop介绍ecshop是一款b2c的商城程序.----------------------------------------------------------------------------------------------------------------------------------------------------------------------------目前(2014年1月11日)最新程序是ecshop-2.7.3版本.ecshop模板堂汇集最新电商资讯为您全面解读电商运营之秘,想了解更多电商营销课程请扫一扫右上方二维码关注我们!程序特点:面向过程,通过函数库与函数调用,来获取数据,并能过smarty模板来展示数据.学习难度小,二次开发比较直观.1.2安装下载最新的ecshop-2.7.3为例,解压得到如下3个目录,其中upload就是需要上传的主程序.把upload解压到web目录下,并改名,如ecshop,并用浏览器打开,即可进入自动安装过程.1.3后台管理常用选项:商品管理栏目管理会员注册项导航配置模板选择注意:在使用一些比较成熟的程序时,尽量通过后台配置选项,来达到目的,而不要直接修改代码.因为后台配置效率更高,更重要的,如果直接修改代码,后续程序的升级将带来麻烦.2.1重要的表分析Ecs_goods表:商品表Ecs_category:栏目表Ecs_brand:品牌表Order_info订单表Order_goods订单对应的商品表.order_action订单操作的原始记录User用户表User_account用户账户表----------------------------------------------------------------------------------------------------------------------------------------------------------------------------用户的账户变动流水表Collect_goods:用户收藏商品表Feedback表:留言表,不针对商品,直接针对店家留的言.Comment:是针对商品做的评论.Nav表导航链接表,可以定制页面上的导航信息.2.2执行流程1:Ecshop属于面向过程+函数调用为主,而且没用单入口模式具体的功能对应具体的页面.2:用的模板引擎是简化的smarty模板.以goods.php为例在init中包含的页面,基本都是声明函数.(因为ec是面向过程+函数来编程的)inc_constants系统常量cls_ecshop用来获取网站的域名,ec版本,图片目录,表前缀等基础信息cls_error.php获取和输出错误信息.lib_time获取和格式化时间的相关函数lib_base计划字符串长度,获取客户IP,发邮件等,几乎所有网站都能用到的基础函数lib_commonecshop各页面都用到的函数,如拼接sql,获取栏目列表,构造面包屑导航.lib_main.phpecshop常用的函数,主要是用户和模板赋值函数多一些.lib_insert.php是为了用smarty模板时,有些局部不缓存的地方,需要调用函数,都在这儿lib_goods.php是商品操作的相关函数lib_article.php文章操作的相关函数注:更详细的函数说明在”ECSHOP函数.doc”里Lib_base.php:base基地基础,此文件声明的是全网站甚至任何网站,都常用用到的函数,Sub_str:截取中文无乱码的文件.Goods.phpRequire(Init.php)........业务逻辑functionxxx();functionyyy();inc_constants.phpcls_ecshop.phpcls_error.phplib_base.phplib_common.phplib_main.phplib_insert.phplib_goods.php----------------------------------------------------------------------------------------------------------------------------------------------------------------------------读取客户端IP,从$_SERVER来读的.Str_len:计算字符串在视觉效果上的长度,一个中文按2个字符算(因为多数情况下,一个中文的宽度是一个字母的2倍宽.)Get_crlf:获取当前用户的换行符.Windows-\r\n,*nix-\n,mac-\rSend_mail:发送邮件.Get_version:获得服务器环境的gd库版本File_mode_info:获取文件的权限信息.Log_write:记录日志到文件Mk_dir:递归创建目录addslashes_deep:递归的对数组进行转义.addslashes_deep_obj:递归对对象的属性进行转义.stripslashes_deep:递归反转义make_semiangle:全角字符转半角check_file_type:检查文件后缀,一般检查后缀,直接通过截取文件名来实现.A.php==a.jpg,伪装上传,带来攻击.Ngnix+PHP某个版本,就有此漏洞.而check_file_type是通过分析文件的头信息域来实现的.mysql_like_quote:对sql语句扣like条件进行转义,防止注入.real_server_ip:获取服务器端IP地址ecs_geoip:把IP地址转为省市地址.trim_right:中英文混杂时,去除右侧可能的乱码.read_static_cache:读文件缓存(把数组等信息序列化,放在文本里存储)write_static_cache:写文件缓存.Lib_common.php主要放置本网站要实现的一些功能的主要函数比如:Get_brand_list获取品牌列表get_children:获取指定栏目的子孙栏目.本文件下的函数比较多,用到的再来讲解.Lib_main.php主要放置前台功能的函数库比如:update_user_info:更新用户的session信息get_user_info:获取用户的详细信息assign_ur_here:计算面包屑导航路径.assign_articles:获取文章列表并赋给smartyLib_insert.php----------------------------------------------------------------------------------------------------------------------------------------------------------------------------放置的是在模板中局部不缓存时,调用的insert_开头的函数.Lib_goods.php是商品操作最频繁函数.小试牛刀:以商城标题中,去除poweredbyEcshop为例打开任意一个页面,看其模板,以goods.php为例Goods.php-找模板-goods.dwt,分析模板的标签,找到相应的{$page_title}标签回到goods.php里,必须推出--assing('page_title',xxx)这个过程,再找到,===$page_tile=$position['title']=$position==assign_ur_here()函数留一下问题:在开发的过程中,有时需要清缓存才能看到效果如何彻底禁用缓存,方便开发时的调试.js函数追踪utils.js底层兼容库common.js购物逻辑相关的函数addToCart()把商品添加到购物车collect()添加商品到收藏夹gotoPage()ajax评论翻页gotoPage()格式化价格addPackageToCart()添加礼包到购物车shopping_flow.js处理购物车过程中相关的函数selectShipping()改变配送方式selectPayment()改变支付方式changeSurplus()改变余额transport.jsajax操作库Ajax.call()//发送ajax查询showdiv.js漂浮层的库showdiv()显示漂浮层hidendiv()隐藏漂浮层----------------------------------------------------------------------------------------------------------------------------------------------------------------------------去除标题中的”poweredByEcshop”大思路:库函数--被调用---goods.php-assign()赋值---display到模板倒过来寻找,从模板找变量,再找assgin过程,再找相关函数.把{$page_title}随便改成其他内容,刷新页面,看到效果.---到goods.php,查看page_title的assign过程,看到如下追踪assign_ur_here()函数,先在本页面(goods.php)寻找,没找到.在lib_main.php里.追踪到lib_main.php里----------------------------------------------------------------------------------------------------------------------------------------------------------------------------模板,观察底部发现引入了page_footer.lbi,追踪page_footer.lbi清除此行,并刷新发现----底部指定位置已经去除了版权标志,但是,每刷新,版本的文字,就随机在底部漂浮.跟踪js的页面自动加载的函数,在js中找到相关函数3.3最新评论index.php---调用函数--获取最新评论----assign()赋值给模