ecshop模板引擎比较简单,相对于smarty要轻量多了,她的实现不到1500行的代码,一个文件搞定。
参考ecshop模板引擎的文档时,里面提到了 {if $num is odd} 的语法,觉得这个语法不错,就尝试了一下,结果失败,查看了一下模板引擎的代码,发现该语法不知道什么时候已经没有了,出于好奇,简单看了一下语法解析的实现,可以通过简单的hack来添加该语法。
在cls_template.php 的 _compile_if_tag 函数中添加如下分支:
- <?php
- …
- case ‘is’:
- $token = ‘%’;
- $i++;
- if($tokens[$i] == ‘odd’) {
- $tokens[$i] = ‘2 == 0’;
- }else if($tokens[$i] == ‘even’) {
- $tokens[$i] = ‘2 == 1’;
- }else {
- throw new exception("is odd or is even");
- }
- break;
- …
- ?>
|
<?php ... case 'is': $token = '%'; $i++; if($tokens[$i] == 'odd') { $tokens[$i] = '2 == 0'; }else if($tokens[$i] == 'even') { $tokens[$i] = '2 == 1'; }else { throw new exception("is odd or is even"); } break; ... ?> |
当然,这里只共学习之用,随便hack别人的代码是不好的。