普通模板与公共模板之间嵌套
普通模板的后缀:
dwt
公共模板的后缀:
lbi
普通模板可以嵌套公共模板
公共模板无法嵌套普通模板
公共模板可以嵌套公共模板
{insert name='member_info'}
ECSHOP目录结构介绍
admin
后台管理系统的相关文件夹api
对外提供数据接口的相关文件夹cert
存放证书的文件夹data
数据连接设置等,包括各种广告的上传图片等images
上传商品图片文件夹includes
前台核心库文件夹(重点,属于模型层M)js
前台用js脚本文件夹languages
语言包文件夹temp
临时文件夹(编译、缓存)themes
模板文件夹(重点,属于视图层V)wap
手机浏览程序文件夹widget
小插件文件夹
模板内置标签
分支流程
{$val.max_amount} {$lang.nolimit}
循环流程
{$ext.name}
init.php 功能
参数过滤
初始化设置与数据定义
加载核心库与类
创建数据库连接与ECS对象
读取全局配置
初始化模板引擎配置
初始化session
其他
加载init.php后,就可以直接操作数据库以及使用模板引擎
移动设备 判断与处理
$ua = strtolower($_SERVER['HTTP_USER_AGENT']);$uachar = "/(nokia|sony|ericsson|mot|samsung|sgh|lg|philips|panasonic|alcatel|lenovo|cldc|midp|mobile)/i";if (($ua == '' || preg_match($uachar, $ua)) && !strpos(strtolower($_SERVER['REQUEST_URI']), 'wap')) { $Loaction = 'h5/'; if (!empty($Loaction)) { ecs_header("Location: $Loaction\n"); exit; }}
在.lbi或.dwt模板文件中,对数据进行处理的源码实现
代码如下:
{$goods.brief|truncate:20}{$goods.short_name|escape:html}
在cls_template.php文件中,第601行:
if (!empty($moddb)) { foreach ($moddb AS $key => $mod) { $s = explode(':', $mod); switch ($s[0]) { case 'escape': $s[1] = trim($s[1], '"'); if ($s[1] == 'html') { $p = 'htmlspecialchars(' . $p . ')'; } elseif ($s[1] == 'url') { $p = 'urlencode(' . $p . ')'; } elseif ($s[1] == 'decode_url') { $p = 'urldecode(' . $p . ')'; } elseif ($s[1] == 'quotes') { $p = 'addslashes(' . $p . ')'; } elseif ($s[1] == 'u8_url') { if (EC_CHARSET != 'utf-8') { $p = 'urlencode(ecs_iconv("' . EC_CHARSET . '", "utf-8",' . $p . '))'; } else { $p = 'urlencode(' . $p . ')'; } } else { $p = 'htmlspecialchars(' . $p . ')'; } break; case 'nl2br': $p = 'nl2br(' . $p . ')'; break; case 'default': $s[1] = $s[1]{0} == '$' ? $this->get_val(substr($s[1], 1)) : "'$s[1]'"; $p = 'empty(' . $p . ') ? ' . $s[1] . ' : ' . $p; break; case 'truncate': $p = 'sub_str(' . $p . ",$s[1])"; break; case 'strip_tags': $p = 'strip_tags(' . $p . ')'; break; default: # code... break; } } } return $p;