小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

讓ecshop的smarty支持數(shù)學運算.

 quasiceo 2014-05-04
讓ecshop的smarty支持數(shù)學運算.
2013-11-09 13:34:25

在ecshop的使用,smarty可以很方便的做成網(wǎng)頁。但ecshop的smarty把一些功能去掉了,只保留了邏輯運算、變量處理

等功能,連數(shù)學計算都不支持。我們想要在smarty模板中對一個變量進行動態(tài)的計算,就沒有辦法。

研究了一個晚上,終于可以讓ecshop的smarty模板支持簡單的數(shù)學計算了。

在ecshop的smarty模板中,對變量處理如下:


{$foo+ 1}

那么生成的后臺代碼是這樣的:


<?php echo$this->_var['foo+1'] ; ?>

它將$號后面的全部作為變量名了。


我們要的效果,

模板中是這樣:


{math equation="$foo + 1"}

在后臺生成這樣的代碼:


<?php echo$this->_var['foo] + 1; ?>


這里需要對cls_template文件進行修改,讓其支持math標簽。

在select 方法中增加一個case:

1
2
3
4
case'math':
$t= $this->get_math_para(substr($tag, 8));
return'<?php echo '. $t. '; ?>';
break;


增加一個方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/**
* 處理math中的公式.
* */
functionget_math_para($val){
$pa= $this->str_trim($val);
foreach($paAS $value)
{
if(strrpos($value, '='))
{
list($a, $b) = explode('=', str_replace(array(' ', '"', "'", '"'), '', $value));
if(strpos($b, '$') >= 0)
{
//$b為類似的1+2,$abc*123等
$pattern= "/\\$[_a-zA-z]+[a-zA-Z0-9_]*/";
preg_match($pattern, $b,$arr);
if($arr) {
foreach($arras$match) {
$v= $this->get_val(substr($match, 1));
$b= str_replace($match, $v, $b);
}
}
}
}
}
return$b;
}

這樣就可以了。


    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多