一、作用

在模板中调用自定义函数的返回结果,带缓存功能,效率高

一般用于数据库查询,这种标签自带缓存,可以避免重复查询数据


二、语法

{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}