国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html
内部邀请码:C8E245J (不写邀请码,没有现金送)
国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为中国PE第一股,市值超1000亿元。 

------------------------------------------------------------------------------------------------------------------------------------------------------------------

来源:http://www.cnblogs.com/dequan-lee/archive/2009/08/06/1540621.html

目前市面上有很多针对PHP的MVC模板,但Smarty无疑是在功能和速度上处于绝对领先地位的。MVC(Model-View-Controller)模型-视图-控制器,相信大家对这个概念不陌生,老李也就不详细解释了。EcShop肯定是要采用MVC架构的,不说大家也明白,网店市场的需求是千变万化的,客户对页面的外观组织形式和页面逻辑的要求可谓是“一千个人心中有一千个哈姆雷特”。为了应对这种变化,EcShop必须采用MVC架构。这里顺便提一下,老李不是所谓的模式派或架构派,不会满嘴冒“观察者模式”、“职责链模式”、“依赖倒置”、“接口隔离”、“MVC”、“MVP”等。老李始终觉得根据项目的需要和变化点来设计软件。如果有需要,即便设计出紧耦合的软件也是很Prefect。

好了,继续说Smarty。先说说Smarty的特点:

  1. 速度:相对于其它PHP模板而言,采用Smarty模板编写的程序可以获得最快的速度。注意,是相对于其它PHP模板而言。
  2. 内建缓存支持(大量缓存处理可能不是很完美)。
  3. 可以自定义插件。
  4. 可以自行设置模板定界符,如{}、{{}}等。
  5. 模板中可以使用控制语句(后面会详细说)。
  6. 仅对修改过的模板文件进行重新编译。

PHP没有内置的Smarty模板类,需要单独下载和配置,大家可以去http://smarty.php.net 上看看。下载后找到libs文件夹,并把它整体复制到将要使用Smarty的应用程序的根目录下(记得改名字哦)。libs文件夹包含四个核心文件smarty.class.php、smarty_Compiler.php、config_File.class.php和debug.tpl,大家有兴趣可以打开看看。不过令老李很奇怪的是,在EcShop中根本发现不到任何Smarty文件的踪迹?原来,EcShop开发团队把Smarty改动一番然后重命名为cls_template.php文件了,呵呵,向EcShop致敬!当然了EcShop肯定是自定义一部分用法和规则,但下面还是抛开EcShop说说通用规则。

先说Smarty变量,变量来自三个部分:

  1. 来自PHP页面中的变量,即assign()方法传过来的。在EcShop中经常可以看见这种使用。
  2. 保留变量,相当于PHP中的预定义变量(见EcShop之路PHP篇)。在Smarty模板中使用保留变量时,无需使用assign方法传值,直接调用变量名即可。get、post、server、session等同于$_GET、$_POST、$_SERVER、$_SESSION。
  3. 修饰变量,有的时候不仅仅需要取得变量的值,还需要对变量进行处理,如转化成大写。

Smarty也有很多内置函数,下面列举几个EcShop中常用的函数:

  1. include和insert:用来载入其它模板。但insert载入的内容不会被缓存,每次开启页面都会重新执行。
  2. Config_load:用来加载配置文件。
  3. foreach:略,注意用法。
  4. section:用于比较复杂数组的循环访问。
  5. fetch:返回模板的输出内容,但不直接显示出来。

Smarty就先说到这吧,相信大家多看看代码也就明白了!

EcShop之路-Smarty的更多相关文章

  1. ecshop缓存清理-限制或禁用ECShop缓存

    ecshop缓存清理-限制或禁用ECShop缓存   ECSHOP的缓存存放在templates/caches/文章夹下,时间长了这个文件夹就会非常庞大,拖慢网站速度.还有很多情况我们不需要他的缓存. ...

  2. ectouch第七讲 之ECshop模板机制整理

    网上的资源感觉还是有些用,可以看看,帮助理解,ECshop模板机制整理原文:http://blog.sina.com.cn/s/blog_6900af430100nkn8.html 一.模板引擎: E ...

  3. ecshop去官方化的修改

    1:如何修改网站"欢迎光临本店" 回答:languages\zh_cn\common.php文件中, $_LANG['welcome'] = '欢迎光临本店';将他修改成你需要的字 ...

  4. ECshop模板机制

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

  5. 使用ecshop电子商务系统的100个小问题

    1:如何修改网站"欢迎光临本店" 回答:languages\zh_cn\common.php文件中, $_LANG['welcome'] = '欢迎光临本店';将他修改成你需要的字 ...

  6. ecshop的模板文件中如何判断用户是否登录

    ecshop中对于smarty的运用和改造有很大的值得借鉴的地方,在dwt模板文件中可以直接判断用户是否登录,现在有规定,凡是只展示不销售的电商平台,一律不得展示商品价格,但可以在用户登录后显示. & ...

  7. 模板引擎(smarty)知识点总结五

    ---------重点知识:循环------------ /*   smarty 循环之for循环 */ /*    基本的语法         {for $i=$start to $end step ...

  8. ecshop二次开发 使用ecshop电子商务系统的100个小问题

    自己从事B4C电子商务开发一段时间了,特别对ecshop深有体会,刚接触的时候不容易理解,下面将根据自己的经验,来总结100条关于操作ecshop电子商务系统的小问题. 1:如何修改网站"欢 ...

  9. ecshop 的一些常用操作

    ecshop商品详细页显示已售商品数量和评论数量 ecshop增加已售数量和评论数量很简单,步骤如下,原创文章转载请指明同盟者网络<http://blog.sina.com.cn/tomener ...

随机推荐

  1. Xcode5 编译ffmpeg,arm64版本;H264

    编译选项:./configure  —-cc=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchai ...

  2. [反汇编练习] 160个CrackMe之005

    [反汇编练习] 160个CrackMe之005. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注 ...

  3. HDU 4632 Palindrome subsequence (区间DP)

    题意 给定一个字符串,问有多少个回文子串(两个子串可以一样). 思路 注意到任意一个回文子序列收尾两个字符一定是相同的,于是可以区间dp,用dp[i][j]表示原字符串中[i,j]位置中出现的回文子序 ...

  4. 【C#学习笔记】播放wma/mp3文件

    using System; using System.Runtime.InteropServices; namespace ConsoleApplication { class Program { [ ...

  5. Oracle 跟踪事件 set event

    一.Oracle跟踪文件 Oracle跟踪文件分为三种类型,一种是后台报警日志文件,记录数据库在启动.关闭和运行期间后台进程的活动情况,如表空间创建.回滚段创建.某些alter命令.日志切换.错误消息 ...

  6. 总结mysql服务器查询慢原因与解决方法

    本文针对MySQL数据库服务器查询逐渐变慢的问题, 进行分析,并提出相应的解决办法,具体的分析解决办法如下: 会经常发现开发人员查一下没用索引的语句或者没有limit n的语句,这些没语句会对数据库造 ...

  7. MySQL备份与复制

    1.二进制日志 二进制日志记录了数据库的所有改变,使得任何slave都可以执行相同的更新.一般来说,开启二进制日志大概会有1%的性能损耗,它有两个重要的使用场景: (1)备份:在某个时间点t作了一次备 ...

  8. Jin Ge Jin Qu hao

    题意: n首歌和一首经典歌已知其长度,一首歌开始唱必须唱完,现在已知剩余时间,求最多能唱歌的个数并保证唱歌时间总长最大 分析: 留最后一个时间唱经典,然后对剩下的时间用背包求出最大个数,并求出总长最大 ...

  9. document.getElementsByClassName方法的重写(OVERRIDE)

    众所周知,对于IE8以下的浏览器(IE8居然是WIN7预装的)没有document.getElementsByClassName,网上也有很多重写的方法,以下是本人在项目中所使用的方法 documen ...

  10. Genesis-3D开源游戏引擎简介!

    Genesis-3D由搜狐畅游公司超百人引擎研发团队历时数年耗费巨资自主研发,是国内外首款商业开源的3D游戏引擎平台.它包括跨平台渲染引擎.2D引擎.物理引擎.音效系统.粒子系统.动画系统.服务器引擎 ...