ecshop学习教程.doc_第1页
ecshop学习教程.doc_第2页
ecshop学习教程.doc_第3页
ecshop学习教程.doc_第4页
ecshop学习教程.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ecshop开发详解功能了解介绍安装后台管理程序分析重要表执行流程底层库js库分析练手功能去除标题PHP去除版权标志js最新评论PHP+模板二次开发自定义title phpemail登陆 php多商品倒计时 js模板开发1.1 ecshop介绍ecshop是一款b2c的商城程序.目前(2014年1月11日) 最新程序是 ecshop-2.7.3版本.已被上海商派(shopex)购买,更新缓慢.程序特点: 面向过程,通过函数库与函数调用,来获取数据,并能过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 用户账户表Account_log:用户的账户变动流水表Collect_goods: 用户收藏商品表Feedback表:留言表,不针对商品,直接针对店家留的言.Comment:是针对商品做的评论.Nav 表 导航链接表,可以定制页面上的导航信息.2.2 执行流程1:Ecshop属于面向过程+函数调用为主, 而且没用单入口模式具体的功能对应具体的页面.inc_constants.php cls_ecshop.phpcls_error.phplib_base.phplib_common.phplib_main.phplib_insert.phplib_goods.php2:用的模板引擎是简化的smarty模板.以goods.php为例Goods.phpRequire (Init.php).业务逻辑function xxx();function yyy();在init中包含的页面,基本都是声明函数.(因为ec是面向过程+函数来编程的)inc_constants 系统常量cls_ecshop 用来获取网站的域名,ec版本,图片目录,表前缀等基础信息cls_error.php 获取和输出错误信息. lib_time 获取和格式化时间的相关函数lib_base 计划字符串长度,获取客户IP,发邮件等,几乎所有网站都能用到的基础函数lib_common ecshop各页面都用到的函数,如拼接sql,获取栏目列表,构造面包屑导航.lib_main.php ecshop常用的函数,主要是用户和模板赋值函数多一些.lib_insert.php 是为了用smarty模板时,有些局部不缓存的地方,需要调用函数,都在这儿lib_goods.php 是商品操作的相关函数lib_article.php 文章操作的相关函数注: 更详细的函数说明在”ECSHOP函数.doc”里Lib_base.php : base 基地基础, 此文件声明的是全网站甚至任何网站,都常用用到的函数,Sub_str : 截取中文无乱码的文件.Real_ip: 读取客户端IP, 从$_SERVER来读的.Str_len: 计算字符串在视觉效果上的长度, 一个中文按2个字符算(因为多数情况下,一个中文的宽度是一个字母的2倍宽.)Get_crlf: 获取当前用户的换行符. Windows-rn, *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是商品操作最频繁函数.小试牛刀:以商城标题中, 去除powered by Ecshop为例打开任意一个页面, 看其模板,以goods.php为例Goods.php-找模板-goods.dwt,分析模板的标签, 找到相应的$page_title标签回到goods.php里,必须推出- assing(page_title,xxx)这个过程,再找到,= $page_tile=$positiontitle=$position=assign_ur_here()函数留一下问题:在开发的过程中,有时需要清缓存才能看到效果如何彻底禁用缓存,方便开发时的调试.js函数追踪utils.js 底层兼容库common.js 购物逻辑相关的函数addToCart() 把商品添加到购物车collect() 添加商品到收藏夹gotoPage() ajax评论翻页gotoPage() 格式化价格addPackageToCart() 添加礼包到购物车shopping_flow.js 处理购物车过程中相关的函数selectShipping() 改变配送方式selectPayment() 改变支付方式changeSurplus() 改变余额transport.js ajax操作库Ajax.call() / 发送ajax查询showdiv.js 漂浮层的库showdiv() 显示漂浮层hidendiv() 隐藏漂浮层lefttime.js 显示剩余时间的库便于做抢购时用.三 练手功能 3.1 去除标题中的”powered By Ecshop”大思路: 库函数-被调用-goods.php-assign()赋值-display到模板倒过来寻找,从模板找变量,再找assgin过程,再找相关函数.把$page_title随便改成其他内容,刷新页面,看到效果.-到goods.php, 查看page_title的assign过程,看到如下追踪 assign_ur_here()函数,先在本页面(goods.php)寻找,没找到.在lib_main.php里.追踪到lib_main.php里3.2 去除版权打开index.dwt模板,观察底部发现引入了page_footer.lbi,追踪page_footer.lbi清除此行,并刷新发现- 底部指定位置已经去除了版权标志,但是, 每刷新,版本的文字,就随机在底部漂浮.跟踪js的页面自动加载的函数,在js中找到相关函数3.3 最新评论index.php-调用函数-获取最新评论-assign()赋值给模板-display-index.dwt分析: 最新评论的函数,优先找系统函数,没有没有,则自己写.assign()修改模板注意:在indew.dwt里, 增加如下代码四: 二次开发二次开发的大原则1:能后台配置,不去修改.2:能用js,css实现,不改模板(比如来一个隔行换色)3:能改模板的,不要改PHP4:能改PHP完成的,不要改数据库一部话概括-逻辑要前移1) 自定义titlephp+模板2) 用户名/email都可以登陆php3) 团购倒计时js4.1 自定义商品title商品页面自定义title,便于SEO功能讲解: 商品页面的title信息是商品名-栏目名-上级栏目名-网店名这个规则来自动生成.对于title,是SEO一个很重要的数据,自动生成的title很可能不符合SEO的需要.步骤:我们如何自定义title?答:首先在商品表增加title字段,然后在商品页面的.php文件中,读取此字段并赋给smarty然后再展示到模板上.从后台管理角度看:发布商品时,表单中应有自定义title表单项,并能提交入库.修改商品时,表单中也应有自定义title表单项,并能提交入库.实施:1:给ecs_goods商品表增加seotitle字段. alter table ecs_goods add seotitle varchar(60) not null default after goods_name;2:在后台修改商品发布时的表单项,增加 自定义title表单项./admin/templates/goods_info.htm 40行左右3:admin/goods.php中的insert ,update代码段,800行左右,分别接收$_POSTseotitle,并拼接在insert语句或update语句中4:在模板中,goods.dwt中, 做逻辑判断,展示seotitle或page_title4.2 用户名和email都可以登陆ecshop的登陆原理ecshop允许集成其他的网站,如dede,discuz等, 并共用会员信息.ec的登陆做了一个统一的登陆接口,满足接口,即可开发出与dede,discuz共用的登陆功能.达到整合目的.user.php?act=act_login登陆用户名:密码:跟踪user.php 找act_login代码段,找到如下:调用的是$user这个对象, 继续跟踪$user这个类在哪儿-$user-返回自-init_user()-定义在-lib_common.php找到如下函数看到: 登陆时用的类,是根据配置文件定义的.有很多类,如下: 这些类,分别是phpbb,discuz的登陆接口,用来整合用的.我们当前用是 ecshop登陆接口在登陆接口父类中,增加一个方法,根据email来获取用户名.再在login方法里,做判断如果传来email,则先把email转换为username,然后再登陆4.3 商品团购倒计时php修改: group_buy.php目的: 得到页面内的每个团购的id及结束时间,并形成json格式,输入在模板中.模板修改: group_buy_list.dwt把每个团购的剩余时间,包在一个span里,并取一个独特的id.接下来,在模板的末尾,showtime()根据gb_json_list循环修改每个团购的剩余时间formattime()负责格式剩余时间.再用定时器每秒执行1下.注意: 这个程序中, 老师写的formattime()函数不够精确, 请同学们自己修正完善.模板开发ecshop的模板用的精简型的smarty模板,语法和smarty绝大部分通用.而ec的程序,又是面向过程,调用函数,赋值给smarty, 然后展示到模板.因此 模板的开发比较直观.1:我们把模板的目录放置ecshop/themes/下面2: 后台管理,查看模板,并没有出现我们新增的模板供选择.这是因为,ec识别模板,要靠css和缩略图做标识,来识别ec要求在模板的目录下,直接放置 style.css, 且首段的注释理解为模板的说明信息.如:/*Template Name: ECSHOP DefaultTemplate URI: /Description: 默认升级版.Version: 2.7.2Author: ECSHOP TeamAuthor URI: /Logo filename: logo.gifTemplate Type: type_0*/3: 完成第2步后,可以看到模板,但是模板没有缩略图.ec的模板缩略图是自动去寻找ecshop/themes/images/screenshot.png,因此需要做好缩略图,并且命名为screenshot.png,并放置在images目录下.4: 把css文件直接放在ecshop/themes/xxx皮肤 下面这一步可能导致,css与图片目录的相对位置发生变化,有一些背景图会失效,注意,修正css中背景图的路径.5: 把模板的首页命名为index.dwt (因为ecshop寻找模板的后缀为dwt)至此,模板的建立就完成了. 接下的工作,即是各个页面的标签的嵌套.(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论