在模版中灵活处理变量的4种方法

原创 jingccj  2019-08-18 11:19:56  阅读 215 次 评论 0 条
_COlD5U">

本文是关于二次开发的高级用法,普通站长请绕行,以免烧脑子。


在模版中显示变量(假设变量名是$var)最通常的写法是:

<{$var}>

但有时我们不想直接显示,而是对变量做一些处理再显示。假设有一个需求,截断变量的前20个字然后输出。


旧版本的akcms可以通过<{akecho}>标签+过滤器来实现这个需求:


先创建一个过滤器截断20个汉字


过滤器的内容是(每个汉字长度为2,每个英文、数字长度为1,所以20个汉字就是40):

php:ak_substr($input,0,40);

假设过滤器的ID是x,然后在标签中应用这个过滤器。

<{akechosource=$varfilter="x"}>
<!--x用?#21019;?#26367;过滤器的ID,?#28909;?-->

在6.1版中有了更简单的方法:

<{akechosource=$varfilter="x"}>
<{$var[#x]}>
<!--上面两个调用完全等效,x代表过滤器的ID,?#28909;紓?-->

这样的写法虽然比原来简单了一些,但是还是需要创建过滤器,像截断字数这种常用的调用我们提供?#35828;?种处理方法:不用创建过滤器,直接在变量的后面加:长度。

<{$var[:40]}>


有时候需要对变量进行简单的处理,?#28909;紓?#24819;把全部字?#20184;?#36716;为大写,稍微有php基础的朋友知道有一个strtoupper函数可以实现这个功能。akcms还支持第3种处理方法:

<{$var[@strtoupper]}>

就是在变量的后面加上[@函数名],但是只支持1个?#38382;?#30340;函数。


如果需求比较复杂,相应的处理代码也比较复杂就无法这样简写了,akcms还支持第4种处理方法:假设需求是变量先与"abc"连接再md5,再截取前6个字符就这样写:

<{$var[@substr(md5($1."abc"),0,6)]}>

在@的后面写php语句,用$1代替要处理的变量。


理论以上这4种变量处理方法能做的事,akecho+过滤器都可以做,只不过新的这方法更方便、简单、直接。


备注:本文用$var变量举例,实际上不存在这个变量。不同类型的模版中有哪些预定义的变量请参考:《所有模版都可以用的全局变量》、《内容页模版变量》、《栏目页模版变量》、《主题页模版变量》、《单页模版变量》

本文地址:http://www.mpbmk.club/post/2091.html
版权声明:本文为原创文章,版权归 jingccj 所有,欢迎分享本?#27169;?#36716;载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?