【Ecshop】v2.7.3模板变量标签改进

 改进代码后虽可解决大多数函数参数的问题,但也同样产生了参数问题:ecshop模板函数参数有部分没有被引号包裹,所以正则并不能匹配到,要修改为引号包裹,那是个大工程。

为了使ecshop模板支持date,最终解决方法是,取消使用改进代码,date变量标签修改为:

case 'date':
    unset($s[0]);
    $str=implode(':',$s);
    $p="date({$str},".$p.')';
    break;

 

 改变不了别人,就改变自己...

 

<================================历史分割线============================>

今天使用ecshop模板格式化时间,{$time|date:'Y-m-d H:i:s'}

却一直没有显示出效果,查一下代码,发现处理变量标签的代码非常简单粗暴,只有一行

位置:includes/cls_template.php 大概590行:

$s = explode(':', $mod);

直接把时间格式给切掉几份了。

 

于是在其下添加两行代码改进:

$s = explode(':', $mod);

#添加下面两行                
preg_match_all('|([\'\"][^\'\"]+[\'\"])|',$mod,$match);
$s=array_merge([$s[0]],$match[1]);

问题解决!

 

附:使ecshop支持date标签

在switch内添加:

case 'date':
    $p="date({$s[1]},".$p.')';
    break;

OK!

 

posted @ 2017-07-27 12:26  GaZeon  阅读(366)  评论(0编辑  收藏  举报