注意:AKCMS已于2019年12月27日宣布停止更新,此文档仅供老用户参考,不建议新用户选择AKCMS建站。
注意:AKCMS6.1.2已取消授权机制,文档中关于授权、服务、技术支持等的内容均已失效。
本文是关于二次开发的高级用法,普通站长请绕行,以免烧脑子。
在模版中显示变量(假设变量名是$var)最通常的写法是:
但有时我们不想直接显示,而是对变量做一些处理再显示。假设有一个需求,截断变量的前20个字然后输出。
旧版本的akcms可以通过标签+过滤器来实现这个需求:
先创建一个过滤器截断20个汉字
过滤器的内容是(每个汉字长度为2,每个英文、数字长度为1,所以20个汉字就是40):
php:ak_substr($input, 0, 40);
假设过滤器的ID是x,然后在标签中应用这个过滤器。
在6.1版中有了更简单的方法:
这样的写法虽然比原来简单了一些,但是还是需要创建过滤器,像截断字数这种常用的调用我们提供了第2种处理方法:不用创建过滤器,直接在变量的后面加:长度。
有时候需要对变量进行简单的处理,比如:想把全部字母都转为大写,稍微有php基础的朋友知道有一个strtoupper函数可以实现这个功能。akcms还支持第3种处理方法:
就是在变量的后面加上[@函数名],但是只支持1个参数的函数。
如果需求比较复杂,相应的处理代码也比较复杂就无法这样简写了,akcms还支持第4种处理方法:假设需求是变量先与"abc"连接再md5,再截取前6个字符就这样写:
在@的后面写php语句,用$1代替要处理的变量。
理论以上这4种变量处理方法能做的事,akecho+过滤器都可以做,只不过新的这方法更方便、简单、直接。
备注:本文用$var变量举例,实际上不存在这个变量。不同类型的模版中有哪些预定义的变量请参考:《所有模版都可以用的全局变量》、《内容页模版变量》、《栏目页模版变量》、《主题页模版变量》、《单页模版变量》