使ecshop模板中可引用常量的實(shí)現(xiàn)方法
更新時(shí)間:2011年06月02日 00:25:13 作者:
據(jù)說(shuō)ecshop的模板類是修改的smarty,不過(guò)個(gè)人感覺(jué)不是修改是完全重寫(xiě)了。它和smarty上只是模板標(biāo)簽上有相同的地方,同時(shí)閹割了很多功能
比如$smarty.const.'常量',這個(gè)就不能用。
其實(shí)模板引擎原理上并不復(fù)雜,只是把一些模板標(biāo)簽替換為php中的函數(shù),變量,語(yǔ)法結(jié)構(gòu)罷了。
這次要在ecshop模板中加入引用常量的功能,只需在函數(shù)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行是新加的,這讓就可在模板文件中通過(guò) {$smarty.const.常量}來(lái)引用php中定義的常量了
21 if($t[0] == 'const'){
22 return strtoupper($t[1]);
23 }
其實(shí)模板引擎原理上并不復(fù)雜,只是把一些模板標(biāo)簽替換為php中的函數(shù),變量,語(yǔ)法結(jié)構(gòu)罷了。
這次要在ecshop模板中加入引用常量的功能,只需在函數(shù)make_var()中加入兩行代碼
復(fù)制代碼 代碼如下:
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行是新加的,這讓就可在模板文件中通過(guò) {$smarty.const.常量}來(lái)引用php中定義的常量了
復(fù)制代碼 代碼如下:
21 if($t[0] == 'const'){
22 return strtoupper($t[1]);
23 }
您可能感興趣的文章:
- ecshop 訂單確認(rèn)中顯示省市地址信息的方法
- php 無(wú)限級(jí)分類學(xué)習(xí)參考之對(duì)ecshop無(wú)限級(jí)分類的解析 帶詳細(xì)注釋
- 萬(wàn)網(wǎng)獨(dú)享主機(jī)Apache為Ecshop商城添加404頁(yè)面的方法詳解
- ecshop 批量上傳(加入自定義屬性)
- 比較discuz和ecshop的截取字符串函數(shù)php版
- PHP實(shí)現(xiàn)的交通銀行網(wǎng)銀在線支付接口ECSHOP插件和使用例子
- ecshop實(shí)現(xiàn)smtp發(fā)送郵件
- ecshop后臺(tái)編輯器替換成ueditor編輯器
- ECSHOP在PHP5.5及高版本上報(bào)錯(cuò)的解決方法
相關(guān)文章
PHP提示Deprecated: mysql_connect(): The mysql extension is dep
這篇文章主要介紹了PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解決方法,是在進(jìn)行PHP數(shù)據(jù)庫(kù)程序開(kāi)發(fā)中常會(huì)遇到的錯(cuò)誤,需要的朋友可以參考下2014-08-08關(guān)于php支持的協(xié)議與封裝協(xié)議總結(jié)(推薦)
這篇文章主要給大家介紹了關(guān)于php支持的協(xié)議與封裝協(xié)議的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用PHP具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11php curl上傳、下載、https登陸實(shí)現(xiàn)代碼
這篇文章主要介紹了php curl上傳、下載、https登陸實(shí)現(xiàn)代碼,需要的朋友可以參考下2017-07-07php設(shè)計(jì)模式 Template (模板模式)
定義一個(gè)操作中的算法骨架,而將一些步驟延遲到子類中,使得子類可以不改變一個(gè)算法的結(jié)構(gòu)可以定義該算法的某些特定步驟2011-06-06PHP使用strstr()函數(shù)獲取指定字符串后所有字符的方法
這篇文章主要介紹了PHP使用strstr()函數(shù)獲取指定字符串后所有字符的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了PHP中strstr()函數(shù)用于字符串截取的使用技巧,需要的朋友可以參考下2016-01-01php ajax實(shí)現(xiàn)文件上傳進(jìn)度條
這篇文章主要介紹了php ajax實(shí)現(xiàn)文件上傳進(jìn)度條的相關(guān)資料,需要的朋友可以參考下2016-03-03php實(shí)現(xiàn)的ping端口函數(shù)實(shí)例
這篇文章主要介紹了php實(shí)現(xiàn)的ping端口函數(shù),以實(shí)例形式較為詳細(xì)的分析了PHP使用socket編程的技巧,需要的朋友可以參考下2014-11-11