国内私募机构九鼎控股打造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. win32 摄像头捕获系统vfw

    //win32 摄像头捕获系统vfw //  VideoRecord.h ///  用于定义一些资源ID #include "resource.h" //#define EXIT  ...

  2. Discuz!NT静态文件缓存(SQUID)

    在目前最新版本的产品中,我们提供了缓存静态文件的解决方案,就是使用SQUID做静态前端,将论坛中的大部分静态文件布署或外链到一个新的HTTP链接上,其中可以外链的静态文件包括:      1.Disc ...

  3. Oracle 课程八之跟踪事件set event

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

  4. Linux下的sniffer工具--TcpDump的安装和使用

    在如今众多的黑客技术中,嗅探器(sniffer)是最常见,也是最重要的技术之一. 用过windows平台上的sniffer工具(例如,netxray和sniffer pro软件)的朋友可能都知道,在共 ...

  5. 9月5日 华为2014校园招聘的机试题目_C语言版答案

    手有些生了. 题目: 通过键盘输入一串小写字母(a~z)组成的字符串.请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串.压缩规则:1.仅压缩连续重复出现的字符.比如 ...

  6. Hadoop中的InputFormat解析

    1.InputFormat InputFormat是Hadoop平台上Mapreduce输入的规范,仅有两个抽象方法. List<InputSplit> getSplits(), 获取由输 ...

  7. 六种排序的C++实现

    class SortNum { public: SortNum(); virtual ~SortNum(); void exchange(int& b,int& c);//交换数据 v ...

  8. [Tommas] 一种有效的测试策略(转)

    在最近的一个大型项目中,我们在早期就定下了一个目标:不会在软件中使用大量QA人员专注于手工测试.通过手工测试发现bug极其耗时且成本高昂,这促使团队尝试尽可能的将质量内嵌到产品内部.但这并不意味着手工 ...

  9. C++实现网格水印之调试笔记(六)—— 提取完成

    昨天在修改了可以调试出来的错误之后,提取出的水印和嵌入的仍然相去甚远.这个时候我觉得有必要整理一下嵌入和提取的整个过程. 嵌入过程: Step1,嵌入的时候对网格的拉普拉斯矩阵L进行特征值分解,得到特 ...

  10. 安装nagios出现的两个错误记录

    最近在安装nagios,出现几个错误记录: 一 检查nagios配置的时候出现错误如下: Warning: Duplicate definition found for host 'kelly' (c ...