一、作用
在模板中调用自定义函数的返回结果,带缓存功能,效率高
一般用于数据库查询,这种标签自带缓存,可以避免重复查询数据
二、语法
{function name=自定义函数的名称 ....}{/function}
三、参数介绍
参数 | 介绍 |
---|---|
name | 自定义函数的名称,需要预先定义函数 |
param | 向自定义函数中传递参数,只接受一个参数传入 |
cache | 缓存时间单位秒,默认关闭缓存;当cache=3600时,表示缓存时间1小时,建议数据查询的标签都加上缓存参数 |
return | 默认返回变量为t,调用方式就是{$t.字段值} |
四、返回变量
变量 | 参数 |
---|---|
{$debug} | 当查询不到数据时,会返回错误信息,调试模板时很有用哦(写在标签以外) |
{$count} | 当前查询的记录,当存在分页时,表示当前页的记录数(写在标签以外) |
{$key} | 当前记录指针位置,从0开始(写在标签以内) |
{$return} | 当前查询的结果集数组 |
当存在return=字母时,以上变量都要写成这种格式{$变量_字母},例如{...reutrn=a}时,变量格式{$key_a} | |
{$is_first} | 判断是否第一条,{if $is_first}第一条{/if} |
{$is_last} | 判断是否最后一条,{if $is_last}最后一条{/if} |
五、显示字段
根据你的预订函数返回值来显示
六、无参数的实例
1、定义预定义函数:tianrui_test
新建或者编辑文件config/custom.php,增加下面的函数
function tianrui_test() { return "这是tianrui函数的返回值"; }
2、模板中的调用方法
{function name=tianrui_test cache=300}{$t}{/function} 这句话会输出 “这是tianrui函数的返回值” 错误诊断:{$debug}
七、带参数的实例
1、定义预定义函数:tianrui_test2
新建或者编辑文件config/custom.php,增加下面的函数
function tianrui_test2($p) { return "这是tianrui函数的返回值:".$p; }
p是函数的参数,通过标签传入的动态变量,只接受一个参数传入
2、模板中的调用方法
{function name=tianrui_test2 param=888 cache=300}{$t}{/function} 这句话会输出 “这是tianrui函数的返回值:888” 错误诊断:{$debug}
综合示例:
1、统计指定内容模块的已通过的内容数量
新建或者编辑文件config/custom.php,增加下面的函数
function my_tongji_module_nums($dir) { if (!$dir) { return "没有param参数"; } // 这里是写查询 return \Phpcmf\Service::M()->table(SITE_ID.'_'.$dir.'_index')->where('status', 9)->counts(); }
模板中的调用方法
{function name=my_tongji_module_nums param=news cache=300}{$t}{/function} 输出 news模块的已通过数量,param是模块目录,缓存300秒 错误诊断:{$debug}
2、统计任意表的可用数据量
新建或者编辑文件config/custom.php,增加下面的函数
function my_tongji_table_nums($table) { if (!$table) { return "没有param参数"; } // 这里是写查询 return \Phpcmf\Service::M()->table($table)->counts(); }
模板中的调用方法
{function name=my_tongji_table_nums param=member cache=300}{$t}{/function} 输出 member表的数量,param是表名称,缓存300秒 错误诊断:{$debug}