比如$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 }














发表评论