ShopExShopExShopExShopEx完全手册
author : ShopEx 开发团队
since : 2009-12-03 $Rev: 308 $
网店系统shopex 的完整项目介绍,架构,及数据库说明,数据库结构飞天小神整理2010-12-16
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 版本: docs.dev.shopex/shopex-b2c/
. pdf 版本: docs.dev.shopex/shopex-b2c/shopex-book.pdf
相关文档
. 模板手册: docs.dev.shopex/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编程手册
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
<1_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 语法。下载地址
www.helicontech/download-isapi_rewrite3.htm 下载那个ISAPI_Rewrite
Lite for Windows NT4/2000/XP/2003 (Freeware!)即可,免费软件! 安装好后,规则和
apache 类似。直接复制到f 文件中即可,有的系统也可能叫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 种插件,其中促销方式可能在会后面的版本有大的改动。
插件名类型标示名默认路径
用户登录插件-passport plugins/passport
图片存储方式插件-storager plugins/storager
支付方式插件-payment plugins/payment
促销方式插件-pmtScheme plugins/pmtScheme
网店机器人动作插件-action plugins/action
数据导入导出插件-dataio plugins/dataio
用户消息插件-messenger plugins/messenger
单独页面布局插件-layout plugins/layout
地区数据插件-location plugins/location
网页挂件-widgets plugins/widgets
商品插件-schema plugins/schema
前台功能插件-shop -
后台功能插件-admin -
从插件的文件组织方式上可以分成目录型和文件型两大类插件。
. 文件型插件:
每个单独的php 文件就是一个插件,文件名和其中的类的名称要符合一下规则:
o 文件名: <;标示名>.插件名.php
o 类名:<;标示名>_插件名
例如: 支付插件taobao 的文件名是:payment.taobao.php, 对应的文
件内容是:
<?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 等统一登录系统
<?php
class passport_phpwind extends modelFactory {
var $passport_name = "PhpWind 论坛V6.3.2"; //整合论坛名称
var $passport_memo = "描述"; //整合论坛描述内容
var $_config = null; //初始化配置变量
var $forward = 0; //初始化跳转链接变量
var $name = "phpwind"; //用户登陆插件名称
/**
* 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 参数为用户I
d 号,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
的转换:
<img src="$storager_str|storager" alt="" />
如果是远程图片,或者是从其他系统导入的数据,就不会有竖线。storager 过滤器就把整条数
据都当第一段来处理,以此保证这个结构的兼容性。第二段和第三段是用来管理资源的当对这
个图片进行删除, 修改等操作时, 系统会到由第三段定义的存储插件, 然后用插件通过第二段
进行定位进而对资源进行操作。下面贴一个使用nginx + Tokyo Tyrant 进行存储的方案:
nginx 的NginxHttpMemcachedModule 有个
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论