使ecshop模板中可引用常量的实现方法


Posted in PHP onJune 02, 2011

比如$smarty.const.'常量',这个就不能用。
其实模板引擎原理上并不复杂,只是把一些模板标签替换为php中的函数,变量,语法结构罢了。
这次要在ecshop模板中加入引用常量的功能,只需在函数make_var()中加入两行代码

function make_var($val) 
{ 
if (strrpos($val, '.') === false) 
{ 
if (isset($this->_var[$val]) && isset($this->_patchstack[$val])) 
{ 
$val = $this->_patchstack[$val]; 
} 
$p = '$this->_var[\'' . $val . '\']'; 
} 
else 
{ 
$t = explode('.', $val); 
$_var_name = array_shift($t); 
if (isset($this->_var[$_var_name]) && isset($this->_patchstack[$_var_name])) 
{ 
$_var_name = $this->_patchstack[$_var_name]; 
} 
if ($_var_name == 'smarty') 
{ 
if($t[0] == 'const'){ 
return strtoupper($t[1]); 
} 
$p = $this->_compile_smarty_ref($t); 
} 
else 
{ 
$p = '$this->_var[\'' . $_var_name . '\']'; 
} 
foreach ($t AS $val) 
{ 
$p.= '[\'' . $val . '\']'; 
} 
} 
return $p; 
}

其中21-23行是新加的,这让就可在模板文件中通过 {$smarty.const.常量}来引用php中定义的常量了
21 if($t[0] == 'const'){ 
22 return strtoupper($t[1]); 
23 }
PHP 相关文章推荐
html中select语句读取mysql表中内容
Oct 09 PHP
php自定义函数之递归删除文件及目录
Aug 08 PHP
PHP spl_autoload_register实现自动加载研究
Dec 06 PHP
PHP中数组的三种排序方法分享
May 07 PHP
php sybase_fetch_array使用方法
Apr 15 PHP
Codeigniter框架实现获取分页数据和总条数的方法
Dec 05 PHP
PHP数组和explode函数示例总结
May 08 PHP
php rmdir使用递归函数删除非空目录实例详解
Oct 20 PHP
php获取客户端IP及URL的方法示例
Feb 03 PHP
ThinkPHP中调用PHPExcel的实现代码
Apr 08 PHP
PHP生成(支持多模板)二维码海报代码
Apr 30 PHP
Referer原理与图片防盗链实现方法详解
Jul 03 PHP
php 数组使用详解 推荐
Jun 02 #PHP
php smarty 二级分类代码和模版循环例子
Jun 01 #PHP
PHP 八种基本的数据类型小结
Jun 01 #PHP
Apache2中实现多网站域名绑定的实现方法
Jun 01 #PHP
php自动获取字符串编码函数mb_detect_encoding
May 31 #PHP
比较时间段一与时间段二是否有交集的php函数
May 31 #PHP
实用PHP会员权限控制实现原理分析
May 29 #PHP
You might like
php 删除记录同时删除图片文件的实现代码
2010/05/12 PHP
php事务处理实例详解
2014/07/11 PHP
PHP之预定义接口详解
2015/07/29 PHP
PHP中array_keys和array_unique函数源码的分析
2016/02/26 PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
2019/04/23 PHP
jQuery .tmpl(), .template()学习资料小结
2011/07/18 Javascript
js特殊字符过滤的示例代码
2014/03/05 Javascript
全面解析Bootstrap表单使用方法(表单按钮)
2015/11/24 Javascript
JavaScript基础知识及常用方法总结
2016/01/10 Javascript
nodejs 的 session 简单使用
2016/06/06 NodeJs
让DIV的滚动条自动滚动到最底部的3种方法(推荐)
2016/09/24 Javascript
js和jquery中获取非行间样式
2017/05/05 jQuery
vue webpack开发访问后台接口全局配置的方法
2018/09/18 Javascript
详解如何在JS代码中消灭for循环
2019/12/11 Javascript
原生js实现自定义滚动条
2021/01/20 Javascript
用Python登录Gmail并发送Gmail邮件的教程
2015/04/17 Python
浅谈django model的get和filter方法的区别(必看篇)
2017/05/23 Python
Django基础之Model操作步骤(介绍)
2017/05/27 Python
Python基于正则表达式实现检查文件内容的方法【文件检索】
2017/08/30 Python
快速解决安装python没有scripts文件夹的问题
2018/04/03 Python
Python实现自定义函数的5种常见形式分析
2018/06/16 Python
我们为什么要减少Python中循环的使用
2019/07/10 Python
详解python logging日志传输
2020/07/01 Python
美国最大的宠物药店:1-800-PetMeds
2016/10/02 全球购物
1688平价精选商城:阿里集团旗下,工厂出厂价格直销
2017/04/24 全球购物
美国球鞋寄卖网站:Stadium Goods
2018/05/09 全球购物
美国转售二手商品的电子商务平台:BLINQ
2018/12/13 全球购物
Kappa英国官方在线商店:服装和运动器材
2020/11/22 全球购物
前厅部经理岗位职责范文
2014/02/04 职场文书
装修活动策划方案
2014/08/27 职场文书
党员自我评议对照检查材料
2014/09/27 职场文书
政风行风自查自纠报告
2014/10/21 职场文书
2015年保安个人工作总结
2015/04/02 职场文书
用Python制作灯光秀短视频的思路详解
2021/04/13 Python
学会用Python实现滑雪小游戏,再也不用去北海道啦
2021/05/20 Python
windows server2012 R2下安装PaddleOCR服务的的详细步骤
2022/09/23 Servers