ECshop模板机制

ECshop模板机制整理

模板机制

近期新项目涉及到ECshop的二次开发,趁此良机正好可以对闻名已久的ECshop系统进行深入了解。要了解一个系统,那么该系统的模板机制就是最重要的一环。相关整理如下:

一、模板引擎:

ECshop给我的第一印象是用的smarty模板引擎,可是很快就发现有些不一样,使用smarty模板引擎的系统通常会至少会包括smarty的核心文件:smarty.class.php、smarty_Compiler.php、config_File.class.php和debug.tpl,而在ECshop中并没用发现smarty的核心类。还是通过程序寻找答案吧,在前台或者后台的公用文件init.php中$smarty对象的初始化中,可以看到加载的模板引擎文件是cls_template.php,原来ECshop团队对smarty的核心部分做了整理及修改,这个引擎相对更加精简,但是使用的时候可能需要注意,不是所有的smarty语法都可以在ECshop中使用,要使用还需修改模板引擎。

二、数据处理:

ECshop根目录下及admin目录下的文件是对应前台、后台页面的数据处理页,在这些文件中对页面所要展示的内容进行处理,之后通过smarty的assign()方法注册变量,最后通过display()方法加载相应的模板文件。但这里我们需要注意ECshop单独封装的几个方法,用于处理模板的公共内容及页面中某些动态内容的加载。如lib_main.php中的assign_template()会设置我们的网店的公共信息及网站设置;assign_dynamic()方法则是设置该页面中的动态加载内容。当页面所需的变量设置完成后,进入smarty的display()方法。

三、解析模板

首先,在ECshop中有.dwt和.lbi两种格式的模板文件,那么这两种文件之间是什么关系呢?可以这样理解.dwt文件是针对前台每个显示页面的模板“框架”,而.lbi模板中则是对页面中公共“内容”的整理,每个.lbi文件都是页面中的一个模块。二者是怎样关联到一起的呢?在模板文件夹中有一个libs.xml文件,这里则是具体配置每个模板“框架”中可以显示哪些“内容”(具体内容之后谈及模板管理会细说)。

下面查看解析模板的过程,在.dwt文件中根据框架的设计会划分出几个“可编辑区域”,.lbi模板正是加载到“可编辑区域”中进行输出的。那么我们需要注意的是.dwt模板中的几对标签:

①<!--TemplateBeginEditable name="右边主区域"--><!-- TemplateEndEditable-->这对标签就是“可编辑区域”标签,在这对标签之间输出的内容是可以通过模板管理进行设置的。主要是选择输出不同的.lbi文件。

②<!--#BeginLibraryItem "/library/page_header.lbi"--><!-- #EndLibraryItem-->这对标签则是对相应的page_header.lbi文件的加载及输出。这个头部的模板每个页面都需要加载,如果我们想更改模板中的头部内容,只要修改page_header.lbi即可,大大提高了效率。

模板文件加载完成之后,即可通过smarty引擎解析smarty标签,完成模板的输出。

时间: 2024-08-02 15:14:26

ECshop模板机制的相关文章

ectouch第四讲之 ECshop模板机制整理

网上的资源感觉还是有些用,可以看看,帮助理解, ECshop模板机制整理 原文:http://blog.sina.com.cn/s/blog_6900af430100nkn8.html 数据处理: ECshop根目录下及admin目录下的文件是对应前台.后台页面的数据处理页,在这些文件中对页面所要展示的内容进行处理,之后通过smarty的assign()方法注册变量,最后通过display()方法加载相应的模板文件.但这里我们需要注意ECshop单独封装的几个方法,用于处理模板的公共内容及页面中

ecshop模板如何修改详细图解

ECSHOP模板修改需要会DIV CSS知识.还有就是DWT,LBI文件的意义,熟记以下一些模板程序有助于修改模板,更多好看的模板也可以看看“ecshop模板堂” 模板文件说明style.css   -  模板所使用样式表activity.dwt  -  活动列表article.dwt   -  文章内容页article_cat.dwt   -  文章列表页article_pro.dwt  -  前一篇文章auction.dwt  -  拍卖商品首页auction_list.dwt  -  拍卖

关于ECSHOP模板架设的服务器php版本过高报错的解决

1.admin/index.php admin/sms_url.php  ECSHOP模板 报错:Strict Standards: mktime(): You should be using the time() function instead in /data/web/ledetaoadmin/sms_url.php on line 31 $auth = mktime(); 替换为: $auth = time(); 报错:Strict Standards: Only variables s

ECShop模板原理

模板的原理 类似Smarty/ECShop这类模板的原理如下图所示. 1.首先是编译模板ECShop/Smart是利用PHP引擎,所以编译的结果是一个PHP文件,其编译过程就是 将分隔符{}替换成PHP的标准分隔符<?PHP ?>,将$var替换成 echo $var; 或者print $var;将其他的比如foreach和if等也替换成标准的PHP语法.将{include file…}之类的则替换成标准的PHP的inlcude …其余都是等效替换. 2.其次是生成编译结果 编译结果是PHP文

Flask Web Development - Flask 模板1 - 模板机制&Jinja2引擎

节选自PartI Chapter3,这个chapter主要讲模板工作原理,这里讲的就是Jinja2这个模板,另外还提到了Flask-Bootstrap及Flask-Moment两个插件,前者对Flask使用Bootstrap做了些封装,后者对moment.js做了些封装.内容较多,估计分开搞. 模板存在的意义 可维护性高的代码是结构良好且整洁的. 当用户在网站注册一个账户时,他在表单里填入邮箱跟密码,并点击提交按钮.在server端就收到一个包含这些数据的request,再由Flask分发到相应

让ecshop模板支持php运算

让ecshop模板支持php运算在 cls_template.php 底部加入函数: /*** 处理math中的公式. * */ function get_math_para($val){ $pa= $this->str_trim($val); foreach($pa AS $value) { if(strrpos($value, '=')) { list($a, $b) = explode('=', str_replace(array(' ', '"', "'", '

Shopex模板机制总览(摘要版)

Shopex模板机制总览(摘要版) 此文档旨在为 shopex 二次开发提供一个便利的参考信息,借以打开 shopex 架构的大门,希望能带给读者一种登堂入室的感觉.由于 shopex 是半开放源代码的形式发布的,而且官方也没有意思要做好文档的公开工作,因此,二次开发中难题较多,这篇文章正是出于答疑解难的观点编写的.如果对诸位有大有裨益,则我会心花怒放:即是小有启发,也是我写作的最大满足:如果不才,读者未可以领略到一丝一息的有用内容,口下留情,适当一批或一评即好.本文要求读者有 PHP.HTML

ecshop模板开发制作教程及常见问题解答

ecshop模板开发制作教程 下列章节的适用于ECshop程序. 同时这里许多内容和一些 Smarty相关. 假如您已经熟悉这些内容可跳过不阅读.假如您是ECshop新手并且想diy一下自己的店铺, 那您应该认真详细地从头到尾读一遍这些章节.( ps: 大家不要紧张,我会尽量用人类的语言和大家交流,实在万不得已才会用机器语言展示给大家 ) 希望大家能够通过本教程,想要什么模板都能自己做出来.哈哈!一起加油吧! 第一章节: 读取这些内容,您将了解: 每个前台页面所对应的模板页面,模板文件的目录结构

ecshop session机制

ecshop session机制 2014-06-12    1455     懒人程序 ecshop的cls_session.php分析,主要是讲述ecshop中的session机制.我们都知道eschop的session都是存储在数据库中的.ecshop的session都是自定义的.所以当我们研究ecshop二次开发的时候.就不许先研究ecshop的cls_session.php. 1: 构造函数function __construct(&$db, $session_table, $sess