ShopEx_手册,店主,二次开发必备
更新时间:2023-04-28 04:07:01 阅读量: 实用文档 文档下载
- shopex模板推荐度:
- 相关推荐
ShopEx 完全手册author : ShopEx开发团队
since : 2009-12-03 $Rev: 308 $
1. 前言和导读
本手册对应版本shopex 4.8.5
本手册部分内容由shopex系统源代码直接生成,因此会持续保持更新
?html版本: 6f57dcf69e31433239689322/shopex-b2c/
?pdf版本: 6f57dcf69e31433239689322/shopex-b2c/shopex-book.pdf
相关文档
?模板手册: 6f57dcf69e31433239689322/shopex-b2c/tplbook/
本手册适合谁来阅读:
?网店店主:
查看包括怎样获取shopex。如何选择主机。怎样安装和调优你的网店系统。
?开发者:
希望扩展shopex功能的朋友,本手册将为你展示多种扩展系统的方法,你将发现shopex已经为你很多准备工作。手册后面的附录里包含了shopex系统的数据对象和数据库的定义细节。
2. 安装和使用
ShopExV4.8网店系统是一套基于网上快速建店的标准化B2C电子商务系统。系统集成了最基本最普通最常用的电子商务运作流程及使用功能,可以满足正常的开店需求。
2.1. 安装shopex
2.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以上 127.0.0.1:3306
ZEND 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 语法。下载地址 6f57dcf69e31433239689322/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 刷新主区域
2.4.2. 使用条码扫描器
2.5. 业务成长之后...
当你需要丰富的权限分配,工作流,来规范你的业务流程的时候。可以选用shopex 提供的订单处理中心系统。
当你需要扩展网店系统功能来支撑精细化的销售运作的时候。你可以寻找一些有技术实例的团队来解决这个问题。当然你也可以组织自己的技术部门,把本手册第三章后面的部分扔给他们就好了。shopex内建的插件体系足够让他们满足你的要求。
2.6. 升级方法
现在的升级逻辑很简单
先跑php 然后调用diff
先跑php 是让数据库里的东西可以跟着变过来
调用数据库diff 去处理php没搞完的杂事
3. 扩展shopex
扩展有两种办法,一种是通过增加插件。另一种是采用我们称之为"第三方开发方案"的方式。
?shopex对插件的设计目标是语法简单,并且可以很方便的将成果发布,传递出去。
?第三方开发方案的特点是,无所不能,功能强大。但实现稍微复杂。
除了一些基本的模板改动之外,其他都要求开发者要基本的懂得PHP语法,并且有一些最基础的面向对象编程的知识。函数不熟可以去查手册,大多数时候,只要会改的技能就可以了。
3.1. 插件体系
shopex系统支持13种插件,其中促销方式可能在会后面的版本有大的改动。
从插件的文件组织方式上可以分成目录型和文件型两大类插件。
?文件型插件:
每个单独的php文件就是一个插件,文件名和其中的类的名称要符合一下规则:
o文件名: <标示名>.插件名.php
o类名:<标示名>_插件名
例如: 支付插件taobao的文件名是:payment.taobao.php, 对应的文件内容是:
class payment_taobao {
var $name = ... //插件名称
var $version = ... //版本号
...
}
?>
可以被放置在除目录型插件里面的任何plugins下的任何位置。到后台刷新插件数据库时,就会被发现。
目录型插件:
因为有些自己的资源,所以被设计成独立的一个目录,其中必须放置一个主插件php文件,文件的命名规则和类的内容都和文件型插件相同。一个目录下只能放置一个主文件。其余文件都作为这个主文件的资源存在。可以被放置在除目录型插件里面的任何plugins下的任何位置。
在4.8.5版本之后,不同类型插件不需要放在各自类型的目录里。只要放在plugins下面就都可以被扫描到。这是为下一步app机制作的准备。
3.1.1. 用户登录插件(passport)
文件型
可以集合msn passport, google account, openid等统一登录系统
/** * setConfig,发送时调用 * 必有方法,config 参数为 getOptions 取得的所有项的配置结果 */ function setConfig($config) { $this->_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_server upstream tt_server1{ #配置一个 tt 服务器组 server 192.168.2.35:11211; server 192.168.2.36:11211; #双主互备 } server {
server_name 6f57dcf69e31433239689322; listen *:80; location / { set $memcached_key $uri; memcached_pass tt_server1; } }接下来,搭建一组这样的 nginx 服务器,再配合 lvs,nginx 集群+tt 集群,一个高性能,高可用互备的图片集群就建立起来了。
3.1.3. 支付方式插件(payment)文件型
//订单提交正式交易地址 var $submitUrl= 'https://6f57dcf69e31433239689322/Payment.aspx'; //提交按钮的图片地址 var $submitButton = '提交按钮 url'; //支持支付的货币类型,定义的数组中货币类 //型键值根据支付网关给出的技术文档来决定 var $supportCurrency = array("CNY"=>"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' ) );
正在阅读:
ShopEx_手册,店主,二次开发必备04-28
2012高考数学考点 知识点05-20
南京工业大学仪器分析期末试卷05-02
2014 - 2015六年级下册数学第一、二单元练习卷(4)03-01
浙江省2009年地面气象测报技能竞赛试题-理论试题01-16
小学生二年级关于第一场雪的作文06-13
有趣的字理识字11-01
《雨点儿》的教学设计05-25
非计划再次手术管理制度与流程05-14
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 店主
- 必备
- 手册
- ShopEx
- 开发
- 软件工程课程设计-人事管理系统
- 第一章 1.2 1.2.1 第一课时 三角函数的定义与公式一
- 2020年汽车销售的工作总结及计划
- 工作报告word格式精选
- Unitrans ZXCTN 9008(V2.08.31)分组传送产品产品描述
- 凯迪拉克豪华车市场分析案例(1)
- 14-项目经理资质管理办法
- XXXX年最新会计证考试复习题
- 浙江省普通高等学校本科教学业绩考核指标体系(试行).
- (完整word版)冀教版小学英语四年级下册期末试卷
- 商务谈判技巧培训心得
- 培智绘画与手工《身体外形》教案
- 2017年中南民族大学文学与新闻传播学院850古代汉语与现代汉语之现代汉语考研题库
- 31北京市安全生产行政处罚自由裁量基准(一)docx
- 中国互联网+种子行业发展模式分析与投资潜力预测分析-发展预测报告(目录)
- 新人教版九年级语文下册第一单元1诗两首习题 (1)
- 大学生创业园合作协议【合同范本供参考】
- 单片机应用编程技巧
- 2017年电大本科公共政策概论小抄-已排版
- 我的世界基础领地权限