经过上一篇安装好ecshop后,在后台闲逛时,又发现一个异常,在导航栏上点击设置导航栏,然后点击管理员列表,随便选一个管理员点分派权限,你会发现权限名称全部没有。
后来在admin\templates\privilege_allot.htm
中找到 {$lang[$priv.action_code]}
改成{$lang.$priv.action_code}
,还有 {$lang[$list.action_code]}
改成{$lang.$list.action_code}
,搞定
后来经我问了群里的朋友,都说{$lang[$priv.action_code]}
这样的语法是正确的,那就奇怪了,我就重新再安装了ecshop
,发现权限名都有显示,那看来是我把源代码修改坏了。
经过我不断的调试,我终于发现了在includes\cls_templates.php
里面的555行附近
原来是
1 |
$val = preg_replace("/\[([^\[\]]*)\]/eis", "'.'.str_replace('$','\$','\\1')", $val); |
一开始我是这样修改
1 2 3 |
$val=preg_replace_callback("/\[([^\[\]]*)\]/is", function($r) { return '.'.str_replace('$','\$',$r[1]); }, $val); |
最后经过调试得修改成这样
1 2 3 |
$val=preg_replace_callback("/\[([^\[\]]*)\]/is", function($r) { return '.'.$r[1]; }, $val); |
这样就行了。