ecshop 结构
一、 文件夹功能说明
1 、根目录:前台程序文件
2 、admin :后台程序文件夹
– 根目录:后台程序文件 *.php 文件
–help/zh_cn :各功能的帮助文件 *.xml 文件
–images :后台页面用图片
–includes :后台公用文件和函数
–js :后台用js 脚本
–styles :后台用样式表
–templates :后台页面模板 *.htm 文件
3 、api :调用API 的系统公用函数
4 、cert :存放证书的文件夹
5 、data :数据连接设置等,包括各种广告的上传图片等
–afficheimg :首页flash 广告图片
–brandlogo :品牌logo
6 、images :上传商品图片文件夹,按日期分目录
–200902 :按月份划分商品图片
–upload :上传文件夹,包括file 、flash 、image 和media
7 、includes :前台公用文件和函数
–codetable :语言对应的代码表
–fckeditor :开源html 文本编辑器
–modules/convert :shopex 转换文件
–modules/cron :如自动上下架、ip 删除等函数
–modules/integrates :整合各种插件和函数基础类
–modules/payment :各种支付接口插件
–modules/shipping :各种送货方式插件
8 、install :系统安装文件夹,用后请删除
9 、js :前台用js 脚本
–calendar :日历控件
10 、languages :语言文件
–zh_cn :简体中文语言文件,存储简体中文下使用的函数变量等
–zh_tw :繁体中文语言文件,存储繁体中文下使用的函数变量等
11 、temp :存放临时缓存等文件
12 、themes :模板文件夹,可以随意拷贝模板样式
13 、wap :手机浏览程序
–includes ;公用文件和函数
–templates :页面模板 *.wml 文件
14 、widget :搜狐博客小插件
二.结构
1. 根目录下的php 文件都为controller ,接收页面请求地址。
都会define(‘IN_ECS’, true) 和包含init.php 文件
在模块中会根据IN_ECS 是否定义来判断进入是否正常。
Init.php 为初始化系统环境
2. init.php 初始化环境
/* 初始化设置 */
@ini_set( 'memory_limit' , '64M' );
@ini_set( 'session.cache_expire' , 180);
@ini_set( 'session.use_trans_sid' , 0);
@ini_set( 'session.use_cookies' , 1);
@ini_set( 'session.auto_start' , 0);
@ini_set( 'display_errors' , 1);
/* 数据链接配置 */
require(ROOT_PATH . 'data/config.php');
DEBUG MODE
0 |
disabled debug |
1 |
output error message |
2 |
disabled caching |
4 |
showing debug page |
8 |
logging SQL query |
if (defined( 'DEBUG_MODE' ) == false )
{
define( 'DEBUG_MODE' , 0);
}
引入库文件
require(ROOT_PATH . 'includes/inc_constant.php'); 定义常量
ec 基础类。获得table 名,domain ,url , data_url, image_ur l
require(ROOT_PATH . 'includes/cls_ecshop.php');
用户级错误处理类。错误收集,显示(模板,非模板)
require(ROOT_PATH . 'includes/cls_error.php');
时间函数
require(ROOT_PATH . 'includes/lib_time.php');
基础函数库。获取用户的真实ip 地址,计算字符串长度,获得用户操作系统换行符,发送邮件,文件或目录权限检查函数,检查目标文件夹是否存在,字符转义,检查文件类型,文件上传,将json 传递的参数转码,获取文件后缀名并判断是否合法,读写结果缓存文件。
require(ROOT_PATH . 'includes/lib_base.php');
共用函数库。验证邮件是否合法,创建地区的返回信息,获得指定国家的所有省份,获得指定分类下的子分类的数组,过滤和排序所有分类,载入配置信息,取得品牌列表,所有促销活动信息,获取邮件模板。。。。。。
require(ROOT_PATH . 'includes/lib_common.php');
前台公用函数库。更新用户SESSION,COOKIE 及登录时间、登录次数,获取用户信息数组,取得当前位置和页面标题,创建分页信息,获得浏览器名称和版本,判断是否为搜索引擎蜘蛛。。。。。
require(ROOT_PATH . 'includes/lib_main.php');
动态内容函数库。获得查询次数以及查询时间,调用浏览历史,调用购物车信息,调用指定的广告位的广告,调用会员信息,调用评论信息,调用商品购买记录,调用在线调查信息。
require(ROOT_PATH . 'includes/lib_insert.php');
商品相关函数库。
require(ROOT_PATH . 'includes/lib_goods.php');
ecshop 文章及文章分类相关函数库
require(ROOT_PATH . 'includes/lib_article.php');
/* 创建 ECSHOP 对象 */
$ecs = new ECS($db_name, $prefix);
/* 初始化数据库类 */
require(ROOT_PATH . 'includes/cls_mysql.php');
$db = new cls_mysql($db_host, $db_user, $db_pass, $db_name);
/* 创建错误处理对象 */
$err = new ecs_error('message.dwt');
/* 载入系统参数。 从数据库中读取出来的*/
$_CFG = load_config();
/* 载入语言文件。赋值数组$_LANG[]*/
require(ROOT_PATH . 'languages/' . $_CFG['lang'] . '/common.php');
全局变量 $db, $ecs, $err ,在函数中用$GLOBALS 引用
Session 对象
if (!defined('INIT_NO_USERS'))
{
/* 初始化session */
include(ROOT_PATH . 'includes/cls_session.php');
$sess = new cls_session($db, $ecs->table('sessions'), $ecs->table('sessions_data'));
define('SESS_ID', $sess->get_session_id());
}
/* 创建 Smarty 对象。*/
require(ROOT_PATH . 'includes/cls_template.php');
$smarty = new cls_template;
---- Index.php ---------------------------------------------------------------------------------------------------------------
缓存编号
$cache_id = sprintf( '%X' , crc32($_SESSION[ 'user_rank' ] . '-' . $_CFG[ 'lang' ]));
if (!$smarty->is_cached( 'index.dwt' , $cache_id))
{
// 页头和页尾所需变量赋值
assign_template();
/*…………………*/
页面中的动态内容,也就是模板设置中的动态内容。
动态内容区域为
<!-- TemplateBeginEditable name=" 美体" -->
<!-- TemplateEndEditable -->
标签所在位置。
即需自定义模板区域需自己添加此标签,在管理后台就可以对指定区域编辑。
assign_dynamic( 'index' );
}
// 显示并创建缓存
$smarty->display( 'index.dwt' , $cache_id);
作者:沐雪
文章均系作者原创或翻译,如有错误不妥之处,欢迎各位批评指正。本文版权归作者和博客园共有,如需转载恳请注明。
如果您觉得阅读这篇博客让你有所收获,请点击右下方【推荐】
为之网-热爱软件编程 http://www.weizhi.cc/