![ShopEx_完全开发手册_[4.8.5].doc_第1页](http://file.renrendoc.com/FileRoot1/2020-1/3/9e5e7229-6595-4e67-a3a9-a5f421f1a8db/9e5e7229-6595-4e67-a3a9-a5f421f1a8db1.gif)
![ShopEx_完全开发手册_[4.8.5].doc_第2页](http://file.renrendoc.com/FileRoot1/2020-1/3/9e5e7229-6595-4e67-a3a9-a5f421f1a8db/9e5e7229-6595-4e67-a3a9-a5f421f1a8db2.gif)
![ShopEx_完全开发手册_[4.8.5].doc_第3页](http://file.renrendoc.com/FileRoot1/2020-1/3/9e5e7229-6595-4e67-a3a9-a5f421f1a8db/9e5e7229-6595-4e67-a3a9-a5f421f1a8db3.gif)
![ShopEx_完全开发手册_[4.8.5].doc_第4页](http://file.renrendoc.com/FileRoot1/2020-1/3/9e5e7229-6595-4e67-a3a9-a5f421f1a8db/9e5e7229-6595-4e67-a3a9-a5f421f1a8db4.gif)
![ShopEx_完全开发手册_[4.8.5].doc_第5页](http://file.renrendoc.com/FileRoot1/2020-1/3/9e5e7229-6595-4e67-a3a9-a5f421f1a8db/9e5e7229-6595-4e67-a3a9-a5f421f1a8db5.gif)
已阅读5页,还剩157页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ShopEx 完全手册author : ShopEx开发团队since : 2009-12-03 $Rev: 308 $1. 前言和导读 2. 安装和使用 o 2.1. 安装shopex 2.1.1. 如何选择主机 o 2.2. 初始化配置系统 o 2.3. 系统调优 2.3.1. url rewrite 2.3.2. 搜索引擎优化(SEO) 2.3.3. 服务器配置 o 2.4. 操作技巧 2.4.1. 使用快捷键 2.4.2. 使用条码扫描器 o 2.5. 业务成长之后. o 2.6. 升级方法 3. 扩展shopex o 3.1. 插件体系 3.1.1. 用户登录插件(passport) 3.1.2. 图片存储方式插件(storager) 3.1.3. 支付方式插件(payment) 3.1.4. 网店机器人动作插件(actions) 3.1.5. 数据导入导出插件(dataio) 3.1.6. 用户消息插件(messenger) 3.1.7. 单独页面布局插件(layout) 3.1.8. 地区数据插件(location) 3.1.9. 网页挂件(widgets) 3.1.10. 商品插件(schema) 3.1.11. 前台功能插件(shop) 3.1.12. 后台功能插件(admin) o 3.2. 软件功能包(app) o 3.3. 使用二次开发接口 3.3.1. 案例A: 更改友情链接页面显示个数 o 3.4. 自定义核心流程页面模板 4. 系统探秘 o 4.1. 系统结构 4.1.1. 数据库结构定义文件 4.1.2. 网店对象 4.1.3. 业务模型(model) o 4.2. 运行过程 4.2.1. 前台流程 4.2.2. 后台流程 o 4.3. 配置信息的存储 o 4.4. 模板系统 o 4.5. 缓存机制 4.5.1. 基于http协议的浏览器缓存 4.5.2. 前台全页缓存-控制器 4.5.3. 前台全页缓存-存储器 4.5.4. 模板缓存 5. shopex对外数据接口 6. 附录 o 6.1. setting o 6.2. 数据库手册 o 6.3. 结构图 1. 前言和导读本手册对应版本shopex 4.8.5 本手册部分内容由shopex系统源代码直接生成,因此会持续保持更新 html版本: /shopex-b2c/ pdf版本: /shopex-b2c/shopex-book.pdf 相关文档 模板手册: /shopex-b2c/tplbook/ 本手册适合谁来阅读: 网店店主: 查看包括怎样获取shopex。如何选择主机。怎样安装和调优你的网店系统。 开发者: 希望扩展shopex功能的朋友,本手册将为你展示多种扩展系统的方法,你将发现shopex已经为你很多准备工作。手册后面的附录里包含了shopex系统的数据对象和数据库的定义细节。 2. 安装和使用ShopExV4.8网店系统是一套基于网上快速建店的标准化B2C电子商务系统。系统集成了最基本最普通最常用的电子商务运作流程及使用功能,可以满足正常的开店需求。 2.1. 安装shopex2.1.1. 如何选择主机shopex提供了一个服务器性能检测探针文件,位于install/svinfo.php。你可以单独上传这个文件到被测的服务器环境上。这个探针所探测的数据和你在系统安装时或者后台看到的服务器状态 是完全一样的。 下面就是个典型的服务器检测报告: $Rev: 308 $ ShopEx 服务器测评=服务器基本信息= 操作系统 WINNT 服务器软件 Apache/2.0.59 (Win32) DAV/2 SVN/1.4.0 PHP/5.2.3 php运行方式 apache2handler =php基本信息= php版本 5.2.3 程序最多允许使用内存量 memory_limit 128M POST最大字节数 post_max_size 8M 允许最大上传文件 upload_max_filesize 2M 程序最长运行时间 max_execution_time 30 被禁用的函数 disable_functions 无 =基本需求= PHP4以上 5.2.3 zend.ze1_compatibility_mode 关闭 Off 支持文件锁(flock) 支持 php可以解析xml文件 支持 MySQL函数库可用 5.0.37 数据库Mysql 3.2.23以上 :3306ZEND Optimizer2.5.7以上 未安装 DNS配置完成,本机上能通过域名访问网络 成功 =推荐配置= unix/linux 主机 WINNT php 版本5.2.0以上 5.2.3 MySQL版本 4.1.2 以上 5.0.27 GD支持 freetype,gif,jpg,png,bmp Zlib支持 支持 Json支持 支持 mbstring支持 支持 fsockopen支持 支持 iconv支持 支持 register_globals关闭 已关闭 allow_url_include关闭 (php5.2.0以上) 已关闭 高速缓存模块(apc,memcached) Memcached 小技巧: 你可以在ie浏览器里直接ctrl+a,ctrl+c复制出来,不需要担心格式问题 这是个独立的文件,同时也会检测php环境和zend opt。 2.2. 初始化配置系统2.3. 系统调优2.3.1. url rewrite 如果开启rewrite,过去的网址将依然有效,用户可以同时通过新老两种url访问你的系统。同时我们会通过发送301头信息更新搜索引擎的记录为新地址 该转换规则存在于plugins/functions/urlmap.php文件中。 其他系统转换过来的用户可以通过修改该文件,使得旧地址依然有效 新版本url地址映射关系是由plugins/functions/actmapper.php文件所定义, 熟悉php的用户可以自己设计独特的url方式 Apache的rewrite规则 RewriteEngine on # 设置RewriteBase的值为你的商店目录地址 RewriteBase / RewriteCond %REQUEST_FILENAME !-f RewriteCond %REQUEST_FILENAME !-d RewriteRule (.*)$ index.php?$1 L rewrite启用方法,就是把root.htaccess改名成.htaccess。更改.htaccess文件中rewritebase为你url的前缀如果感觉麻烦,直接在后台 设置-基本设置-启用伪静态。由程序自动完成上面两个工作。 IIS下的配置方法 iis下需要isapi_rewrite 第三版,老版本的rewrite不支持RewriteCond语法。下载地址 /download-isapi_rewrite3.htm 下载那个ISAPI_Rewrite Lite for Windows NT4/2000/XP/2003 (Freeware!)即可,免费软件! 安装好后,规则和apache类似。直接复制到httpd.conf文件中即可,有的系统也可能叫httpd.ini。 # 设置RewriteBase的值为你的商店目录地址 RewriteBase / RewriteCond %REQUEST_FILENAME !-f RewriteCond %REQUEST_FILENAME !-d RewriteRule (.*)$ index.php?$1 L 管理工具- internet信息服务- 网站 点右键. - 属性 ISAPI筛选器看到下面那个ISAPI_Rewrite3了吧。 转到 rewrite的选项卡 可以看到里面的rewrite规则 设置mime类型,启用javascript加速 Nginx 请修改PATH为你的安装路径 location /PATH/ if (!-e $request_filename) rewrite /PATH/(.*)$ /PATH/index.php?$1 last; webserver众多,我们仅列出具有代表性的几款 2.3.2. 搜索引擎优化(SEO)2.3.3. 服务器配置2.4. 操作技巧2.4.1. 使用快捷键快捷键功能alt+1商品alt+2订单alt+3会员alt+4营销推广alt+5站点管理alt+6统计报表alt+5站点管理esc关闭对话框 / 关闭列表详细R刷新主区域U切换左侧导航H打开使用向导/定位到搜索框按下 Ctrl 点击鼠标拖动列表页将航向滚动列表到拖动方向2.4.2. 使用条码扫描器2.5. 业务成长之后.当你需要丰富的权限分配,工作流,来规范你的业务流程的时候。可以选用shopex 提供的订单处理中心系统。 当你需要扩展网店系统功能来支撑精细化的销售运作的时候。你可以寻找一些有技术实例的团队来解决这个问题。当然你也可以组织自己的技术部门,把本手册第三章后面的部分扔给他们就好了。shopex内建的插件体系足够让他们满足你的要求。 2.6. 升级方法现在的升级逻辑很简单 先跑php 然后调用diff 先跑php 是让数据库里的东西可以跟着变过来 调用数据库diff 去处理 php没搞完的杂事 3. 扩展shopex扩展有两种办法,一种是通过增加插件。另一种是采用我们称之为 第三方开发方案的方式。 shopex对插件的设计目标是语法简单,并且可以很方便的将成果发布,传递出去。 第三方开发方案的特点是,无所不能,功能强大。但实现稍微复杂。 除了一些基本的模板改动之外,其他都要求开发者要基本的懂得PHP语法,并且有一些最基础的面向对象编程的知识。函数不熟可以去查手册,大多数时候,只要会改的技能就可以了。 3.1. 插件体系shopex系统支持13种插件,其中促销方式可能在会后面的版本有大的改动。 插件名类型标示名默认路径用户登录插件-passportplugins/passport图片存储方式插件-storagerplugins/storager支付方式插件-paymentplugins/payment促销方式插件-pmtSchemeplugins/pmtScheme网店机器人动作插件-actionplugins/action数据导入导出插件-dataioplugins/dataio用户消息插件-messengerplugins/messenger单独页面布局插件-layoutplugins/layout地区数据插件-locationplugins/location网页挂件-widgetsplugins/widgets商品插件-schemaplugins/schema前台功能插件-shop-后台功能插件-admin-从插件的文件组织方式上可以分成目录型和文件型两大类插件。 文件型插件: 每个单独的php文件就是一个插件,文件名和其中的类的名称要符合一下规则: o 文件名: .插件名.php o 类名: _插件名 例如: 支付插件taobao的文件名是:payment.taobao.php, 对应的文件内容是: 可以被放置在除目录型插件里面的任何plugins下的任何位置。到后台刷新插件数据库时,就会被发现。 目录型插件: 因为有些自己的资源,所以被设计成独立的一个目录,其中必须放置一个主插件php文件,文件的命名规则和类的内容都和文件型插件相同。 一个目录下只能放置一个主文件。其余文件都作为这个主文件的资源存在。 可以被放置在除目录型插件里面的任何plugins下的任何位置。 在4.8.5版本之后,不同类型插件不需要放在各自类型的目录里。只要放在plugins下面就都可以被扫描到。这是为下一步app机制作的准备。 3.1.1. 用户登录插件(passport)文件型 可以集合msn passport, google account, openid等统一登录系统 _config = $config; /* * verifylogin,用户登陆验证 * 可选方法,login参数为用户名,passwd参数为用户密码 */ function verifylogin($login,$passwd) /* *decode,解码 *可选方法 */ function decode($responseData) /* * getoptions * 必有方法,取得的所有项的配置结果 * 返回一个配置结果的数组 */ function getoptions() return $options; /* * login,用户登陆 * 必有方法,userId参数为用户Id号,rurl参数为返回的跳转链接 */ function login($userId, $rurl) /* * regist,用户注册 * 必有方法,userId参数为用户Id号,rurl参数为返回的跳转链接 */ function regist($userId,$rurl) /* * logout,用户退出 * 必有方法,userId参数为用户Id号,rurl参数为返回的跳转链接 */ function logout($userId,$rurl) /* * _StrCode,编码/解码 * 可选方法,string参数为需要进行处理的字符串, * action参数表示对数据进行ENCODE编码还是DECODE解码 */ function _StrCode($string,$action=ENCODE) /* * ClientUserAction * 必有方法,action参数为作为客户端操作动作, * userdb参数为数据库名,forward参数为跳转链接 */ function ClientUserAction($action,$userdb,$forward=) /* * StrCode,编码/解码 * 可选方法,string参数为需要进行处理的字符串, * action参数表示对数据进行ENCODE编码还是DECODE解码 */ function StrCode($string,$action=ENCODE) /* * ServerClient * 必有方法,action参数为作为服务器端操作动作 */ function ServerClient($action) /* * getPlugCookie,取得插件Cookie * 可选方法,action参数为作为服务器端操作动作 */ function getPlugCookie() /* * setPlugCookie,设置插件Cookie * 可选方法,val参数为设置插件Cookie的值 */ function setPlugCookie($val) ?3.1.2. 图片存储方式插件(storager)文件型 如果你去查看shopex系统里存放商品图片的数据表sdb_gimages,会发现图片存放是一个竖线分割的字符串, 规则如下: 网址|资源定位|存储方式比如: images/goods/01/02.jpg|goods/01/02.jpg|fs_storager为什么要这样设计? 我们把这个字符串叫storager格式,他的好处是可以方便的使用多种存储后端,shopex可以把图片存在ftp上,存在flickr里,存在amazon的s3里,或者存在memcache里。 在此分段解释一下各部分的使用方式: 第一个段是用来在前台访问的:就是url,可以是绝对地址,也可以是相对地址。 第二段是存储代码用来定位资源的:比如是flickr里的图片id, ftp服务器里的相对资源 第三段是图片存储器的类型表示, 代码会定位到plugins/function/.php 规则很简单,只取第一个竖线前面的部分,我们通过一个smarty插件做storager格式和url的转换: 如果是远程图片,或者是从其他系统导入的数据,就不会有竖线。storager过滤器就把整条数据都当第一段来处理,以此保证这个结构的兼容性。 第二段和第三段是用来管理资源的当对这个图片进行删除,修改等操作时,系统会找到由第三段定义的存储插件,然后用插件通过第二段进行定位进而对资源进行操作。下面贴一个使用nginx + Tokyo Tyrant进行存储的方案: nginx的NginxHttpMemcachedModule有个很牛X的特性,可以使用url作为memcache的key进行资源访问。这使得建造分布式的图片存储集群变得简单,同时,性能也有大规模提升。 使用内存做存储有两个缺点,一是有容量限制,二是不能永久存储。因此我们使用 Tokyo Tyrant 做存储方案。Tokyo Tyrant是Tokyo Cabinet的网络接口,可以使用memcached一样的协议。同memcache相比,Tokyo Cabinet可以将资源存放在硬盘中,可以实现互备,可以作为永久存储方案。 实施分两部分,首先配置软件端,我们增加一个shopex的存储插件 tt_storager 在其中实现向tt服务器的存储部分,很简单:把它当memcache用就可以了。 function save($file,&$url,$type,$addons) $id = $this-_get_ident($file,$type,$addons,$url,$path); if($path & $this-memcache-set($path,file_get_contents($file) $this-memcache-delete($file,10); return $id; else return false; 接着配置nginx,让他可以对那个访问的url到tt上取资源: #这里可以配置n组tt_serverupstream tt_server1 #配置一个tt服务器组 server 5:11211; server 6:11211; #双主互备server server_name ; listen *:80; location / set $memcached_key $uri; memcached_pass tt_server1; 接下来,搭建一组这样的nginx服务器,再配合lvs,nginx集群+tt集群,一个高性能,高可用互备的图片集群就建立起来了。 3.1.3. 支付方式插件(payment)文件型 RMB, USD=02); /支持支付的地区 var $supportArea = array(AREA_CNY,AREA_USD); var $desc = ; /支付方式描述 var $intro = ; /支付方式介绍 var $M_Language = 1; /语言选择,表示商家使用的页面语言 /在添加支付方式时,下拉列表的排列顺序(越小越靠前显示) var $orderby = 29; var $head_charset = gb2312; /编码设置 /支持真实的外币交易 var $cur_trading = true; /* * toSubmit,向支付网关发出支付请求 * 必有方法,payment参数为需要提交的订单详细信息 */ function toSubmit($payment) return $return; /* * callback,支付网关向系统发出支付应答 * 必有方法,返回四种状态: * 1.PAY_ERROR:签名认证失败; * 2.PAY_SUCCESS:支付成功; * 3.PAY_FAILED:支付失败; * 4.PAY_PROGRESS:交易处理中; */ function callback($in,&$paymentId,&$money,&$message,&$tradeno) return PAY_ERROR; /* * getfields * 必有方法,返回所需要配置的信息数组 */ function getfields() return array( member_id=array( label=客户号, /配置信息标签 type=string /配置信息类型 ), PrivateKey=array( label=私钥, type=string ) ); /* * applyForm,支付方式申请的表单 * 可选方法,agentfield参数为申请表单需要提交的信息 * 返回一个支付方式申请的表单 */ function applyForm($agentfield) return $tmp_form; ?3.1.4. 网店机器人动作插件(actions)文件型 array( label=增加积分, /执行动作标签名称 /执行动作的内容,以及该内容的类型 args=array(点数=array(type=number), delPoint=array(label=扣除积分 ,args=array(点数=array(type=number), addCoupon=array(label=送订单优惠券 ,args=array(优惠券=array( required=true, /引用对象的特殊模块 type=object:trading/coupon, filter=cpns_type=1&ifvalid=1) ), ); /* * addPoint,根据actions方法返回的动作命名的函数 * 必有方法,data参数为订单信息,point参数为变化的积分 */ function addPoint($data,$point) . /* * delPoint,根据actions方法返回的动作命名的函数 * 必有方法,data参数为订单信息,point参数为变化的积分 */ function delPoint($data,$point) . /* * addCoupon,根据actions方法返回的动作命名的函数 * 必有方法,data参数为订单信息,coupon参数为优惠券信息 */ function addCoupon($data, $coupon) . actions返回的数组,在网店后台工具箱-网店机器人-订单-添加规则中,“执行动作”的下拉列表(见下图示),下拉列表的选择项就是返回数组的label标签名称。后面的输入框是根据返回数组的键args来判断,假如type类型是number,则显示文本框,假如type类型是引用特殊模块,则根据特殊模块来显示内容。 3.1.5. 数据导入导出插件(dataio)文件型 $v) $row$k = str_replace(n,n,$v); /以制表符为间隔来输入每一行的每一列,并且最后换行 echo implode(t,$row).rn; flush(); /* * export_finish * 必有方法,导出结束 */ function export_finish() ?目前数据导入方法暂时不公布。 3.1.6. 用户消息插件(messenger)目录型 在网店后台,会员-邮件短信设置-电子邮件下的配置,就可以根据用户消息插件中getOptions定义的配置信息来配置发送方式、发送地址等。 3.1.7. 单独页面布局插件(layout)目录型 3-columns /三列 layout_3-columns.php /布局配置文件 preview.png /布局缩略图预览 layout.html /布局模板 2-columns-left /两列,左为主 preview.png layout_2-columns-left.php layout.html 2-columns-right /两列,右为主 preview.png layout_2-columns-right.php layout.html 1-column /单列 layout.html preview.png layout_1-column.phplayout.html 比如:在2-columns-left目录下的布局模板,布局:两列,左为主。 layout_2_columns_left.php 比如:在2-columns-left目录下的布局配置文件。 在网店后台,页面管理-站点栏目-添加顶级栏目-选择单独页面-选择布局-设置布局(如下图示),就可以根据自定义的单独页面布局插件,来选择布局。 3.1.8. 地区数据插件(location)目录型 ?phpclass local_difang var $name = 某地方; /地区插件名称 var $desc = 地区描述; /地区插件描述 var $maxdepth = 3; /地区最大深度为3层 /* * install * 必有方法,安装时调用,将area.txt文件内地区信息插入数据库表中。 */ function install() . 3.1.9. 网页挂件(widgets). 一步步做个widgets 基础篇首先建立一个目录plugins/widgets/helloword 这个就是新的挂件目录,系统的每个widgets都是一个目录 里面放两个文件: widgets.php: default.html: HelloWorld这时目录看起来这个样子: 我们到后台可视化模板编辑里面添加板块。 保存,前台就能看到了 添加一个输入框 下面我们来改进这个板块:在后台输入一串文字,在前台显示出来。 增加一个配置文件_config.html 这个文件名是定死的,只要存在这个文件,那么就会把这个文件内容放到后台的版块编辑里面 _config.html 输入我的文字:input type=text value= name=string_1 /注意:这个输入框的value在这里设置的是 , 这样在版块编辑的时候,才会作为把你上次填的文字放在输入框里我们在这里做的每个input/select元素,都会作为$setting这个变量的一部分 编辑的时候就是这个样子: 下面把输入的字符串在前台显示出来:修改default.html Hello:这时前台的样子: 加入控制程序 再在这个目录下添加一个 widgets_helloword.php,这里的文件和php函数,要用widget_ + 目录的名字(helloword)命名 widget_helloword.php ?phpfunction widget_helloword(&$setting,&$system) return .$settingstring_1.;?下面修改default.html,让他输出通过php修改过的文字。只要把 改成即可。 default.html H
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 防洪提勘察设计合同范本
- 狗子领养合同协议书范本
- 美容店长工资合同协议书
- 求合作协议需要几份合同
- 签了补充协议没签主合同
- 首付房屋转让协议书范本
- 电工安全施工合同协议书
- 能效管理合同协议书范本
- 法院判决房屋赔偿协议书
- 生产质量安全协议书范本
- 热电厂2空预器大修施工方案
- 十二岁套面圈的顺口溜大全
- 中国儿童严重过敏反应诊断与治疗建议(2022年)解读
- 卡吉斯铸铁锅炉
- 钢箱拱钢箱梁吊装施工方案
- GB/T 23821-2022机械安全防止上下肢触及危险区的安全距离
- GB/T 25980-2010道路车辆旅居挂车和轻型挂车的连接球尺寸
- GB/T 24218.1-2009纺织品非织造布试验方法第1部分:单位面积质量的测定
- GB/T 1633-2000热塑性塑料维卡软化温度(VST)的测定
- 手术讲解模板:肩关节全部置换术课件
- 食堂伙食收据样稿
评论
0/150
提交评论