模板制作教程:函数介绍
调用自定义资料
一、函数名称
dr_block
二、函数介绍
调用文本块内容和名称
三、参数值
参数 | 介绍 |
---|---|
$id | 文字块id |
$type | 文字块类型:0显示内容,1显示名称 |
$siteid | 站点id:默认为当前站点id |
四、返回值
返回文本框内容或者名称
五、模板示例
1、普通示例
{dr_block(99, 0)} // 文字块id为99的内容 {dr_block(99, 1)} // 文字块id为99的名称
2、单文件类型调用
{dr_get_file(dr_block(99))}
3、多文件类型调用
{php $block=dr_block(99);} {loop $block.file $file} 文件地址:{dr_get_file($file)} {/loop }
字段选项值 dr_field_options
一、函数名称
dr_field_options
二、函数介绍
用于任意表的复选框、下拉选择框、单选按钮
三、参数值
参数 | 介绍 |
---|---|
$id | 字段的id |
四、返回值
字段选项数组 array('value'=>'name')
五、模板示例
1、显示全部选项信息
//将id=222字段的下拉框值读出来 {php $field = dr_field_options(222);} // 遍历全部 {loop $field $value $name} 选项名称:{$name} 选项值:{$value} {/loop}
2、单选和下拉选择,根据值显示名称
//将id=222字段的下拉框值读出来 {php $field = dr_field_options(222);} // 由值获取名称 {$field[值]}
这里的值是单选和下拉字段值,例如show.html页面写法是:$字段英文名
{$field[$字段英文名]}
3、复选框根据值显示名称
//将id=222字段的复选框值读出来 {php $field = dr_field_options(222);} {loop $field $value $name} {if in_array($value, 值)} 选项名称:{$name} 选项值:{$value} {/if} {/loop} -------或者------ {loop $field $value $name} {if in_array($value, dr_string2array(字段名值))} 选项名称:{$name} 选项值:{$value} {/if} {/loop}
这里的值是复选框字段值,例如show.html页面写法是:$复选框英文名
转换文件大小值
dr_format_file_size($fileSize, $round = 2)
将文件大小的字节数字转化成对应的Mb值
内容内链
方案一、将tag插件的关键词给文章内容加上关键词内链(如何构建自己的内链库)
show.html页面调用文章内容方法为:
{$content}
那么内链调用方法为:
{dr_neilian($content, 0, 1)} 内链在本页面打开,不重复出现 {dr_neilian($content, 0, 0)} 内链在本页面打开,可以重复出现 {dr_neilian($content, 1, 0)} 内链链接新页面打开,可以重复出现 {dr_neilian($content, 1, 1)} 内链链接新页面打开,并且只出现一次内链
方案二、将模块本身的关键词加入到内容中
文章内容内链调用函数的作用是将本文的关键字关联到文章内容中,并加上关键词高亮链接。
show.html页面调用文章内容方法为:
{$content}
那么内链调用方法为(4.5.2以上版本可用):
{dr_content_link($kws, $content)} 如果只关联一次,可以这样调用 {dr_content_link($kws, $content, 1)}
内链效果:
如何使用网站表单构建自己的自定义内链库?
链接库生成:安装网站全局表单,新建一个表单,添加自定义字段 url
以下是在 show.html ( form更多设置请看 https://www.xunruicms.com/doc/56.html )
{php $outkws = [];} {form form=表单的英文名称} {php $outkws[$t.title] = $t.url;} {/form}
以下是内容
show.html 原调用是 {$content} 改为 {dr_content_link($outkws, $content, 1)}
自定义页面显示
一、作用
dr_page_value($id, $field, $siteid)
显示指定自定义页面的单条数据信息
二、参数
参数 | 介绍 |
---|---|
参数1 | 自定义页面id号 |
参数2 | 自定义页面字段名称 |
参数3 | 站点id号,默认当前站点 |
三、显示字段
字段信息请参看后台“数据字典”中单击page表
字段名 | 介绍 |
---|---|
pid | 上级的id,当为0时表示顶级自定义页面 |
pids | 上级的id集合,格式:0,上级id1,上级id2... |
name | 自定义页面的名称 |
title | seo标题,只在自定义页面内容页出现在title标签中 |
keywords | seo关键词 |
description | seo描述信息 |
content | 自定义页面详细内容 |
dirname | 目录名称,唯一标识 |
pdirname | 含父级目录名称,上级目录1/上级目录2/当前目录 |
child | 当等于1时表示,此单页有子类 |
childids | 所以子类id(含当前id),格式:当前id,下级id1,下级id2 |
thumb | 缩略图,必须使用dr_thumb函数调用缩略图字段 |
attachment | 附件信息,此字段是一个数组格式,需要使用loop标签循环显示,必须使用dr_get_file函数调用文件信息(例子介绍) |
topid | 最顶级自定义页面id |
四、相关例子
1、查询的自定义页面id=5的自定义页面内容
{dr_page_value(5, 'content')}
2、循环显示的自定义页面id=5的附件信息
{loop dr_page_value(5, 'attachment') $i $t} 循环编号:{$i} // 从0开始 附件描述:{$t.title} 附件地址:{dr_get_file($t.file)} {/loop} // dr_get_file函数显示真实文件地址 // dr_down_file函数用于下载这个文件 // dr_thumb函数用于图片显示
3、查询的站点3的自定义页面id=5的自定义页面内容
{dr_page_value(5, 'content', 3)}
4、查询的自定义页面id=5的自定义页面缩略图地址
{dr_thumb(dr_page_value(5, 'thumb'))}
5、首页循环调用自定义页面id=5的附件
附件描述:{$c.title} 附件地址:{dr_get_file($c.file)} 附件地址(缩略图形式):{dr_thumb(dr_get_file($c.file),600,400,0,'crop')}
联动菜单调用 dr_linkage
一、函数名称
dr_linkage
二、函数介绍
调用当前或者顶级联动菜单数据
三、参数值
参数 | 介绍 |
---|---|
$code | 联动菜单标示代码,如address |
$id或$cname | 联动菜单id编号或者别名 |
$level | 调用级别:默认0表示当前菜单,1表示顶级,2表示第二级,等等 |
$name | 菜单名称字段,如果有显示它的值,否则返回数组 |
四、返回值
数组或者指定字段值
如果要调用联动菜单数字id,请调用字段:ii,因为id是别名存储值,ii才是数字值
五、模板示例
{dr_linkage('address', 99, 0, 'name')} // 地区菜单id=99的名称 {dr_linkage('address', 99, 1, 'name')} // 地区菜单id=99的第1级菜单名称 {dr_linkage('address', 99, 2, 'name')} // 地区菜单id=99的第2级菜单名称 {php $data=dr_linkage('address', 99);} // 地区菜单id=99的全部数据,返回一个数组 菜单名称:{$data.name}
联动菜单面包屑 dr_linkagepos
一、函数名称
dr_linkagepos
二、函数介绍
联动菜单包屑导航
三、参数值
参数 | 介绍 |
---|---|
$code | 联动菜单标示代码 |
$cname或$id | 联动菜单别名或者id |
$symbol | 菜单间的间隔符号,默认为> |
$url | url地址格式,必须存在{linkage},否则返回不带url的字符串 |
四、返回值
联动菜单层级关系字符
五、模板示例
{dr_linkagepos('address', 99, '-')} // 显示地区联动菜单id=99的层级关系,用-隔开,如:广东-佛山-叶问 {dr_linkagepos('address', 99, '-', 'index.php?id={linkage}')} // 显示地区联动菜单id=99的层级关系并带链接,链接格式就是后面的,{linkage}替换联动菜单id
用户头像调用
一、函数名称
dr_avatar
二、函数介绍
调用会员头像图片
三、参数值
参数 | 介绍 |
---|---|
$uid | 会员id |
四、返回值
返回图片地址
五、模板示例
{dr_avatar(1)} // 会员id=1的头像 当前登录会员的头像:{$member.avatar} 列表显示的会员头像:{dr_avatar($t.uid)} // 默认t前缀的前提下
二维码
一、函数名称
dr_qrcode
二、函数介绍
任意内容的二维码地址
三、参数值
参数 | 介绍 |
---|---|
text | 二维码内容,如一个地址等 |
thumb | 图片地址,在二维码增加一个LOGO |
level | 表示容错率,也就是有被覆盖的区域还能识别,分别是 L(QR_ECLEVEL_L,7%),M(QR_ECLEVEL_M,15%),Q(QR_ECLEVEL_Q,25%),H(QR_ECLEVEL_H,30%); |
size | 表示生成图片大小,默认是5 |
四、返回值
返回二维码地址
五、模板示例
{dr_qrcode(SITE_URL)} 输出网站地址的二维码
在生成的二维码URL:index.php?s=api&c=api&m=qrcode&thumb=中间LOGO&text=内容&size=大小值&level=容错率
用户信息 dr_member_info函数
一、函数名称
dr_member_info
二、函数介绍
调用会员的详细资料,含自定义字段
三、参数值
参数 | 介绍 |
---|---|
id | 会员id |
name | 输出字段名称,不填就输出全部会员信息 |
cache | 缓存时间,默认10000秒 |
四、返回值
返回会员信息数组
五、模板示例
{php $user=dr_member_info(1);} // 调用会员id=1的信息 会员名称:{$user.username} 会员邮箱:{$user.email} 手机号码:{$user.phone} 真实姓名:{$user.name} 其他字段:{$user.字段名称} 会员头像:{$user.avatar} 是否是后台管理员:{$user.is_admin} 用户组id:{print_r($user.groupid)} 数组id号 显示加入了哪些用户组: {loop $user.group $tt}用户组ID:{$tt.gid} 这是gid不要写成id 级别名称:{$tt.group_level} 用户组名称:{$tt.group_name} 有效期:{dr_date($tt.stime)} ~ {dr_date($tt.etime)}
{/loop}
关于用户的自定义字段可以使用这篇教程的循环内方法(注意前缀需要改成上面的$user.*****)
https://www.xunruicms.com/doc/102.html
1、如果在list标签里面的话,需要加上
{php $user=dr_member_info($t.uid);} // 调用会员uid的信息 会员名称:{$user.username} 会员邮箱:{$user.email} 手机号码:{$user.phone} 真实姓名:{$user.name} 其他字段同上例
2、如果在show.html页面调用当前内容的作者信息,需要加上
{php $user=dr_member_info($uid);} // 调用会员uid的信息 会员名称:{$user.username} 会员邮箱:{$user.email} 手机号码:{$user.phone} 真实姓名:{$user.name} 其他字段同上例
3、用户发文量(配合user变量)
{count module=news uid=$user.id} // news是模块名称可以随意修改成为自己的
4、用户评论量(配合评论插件)(配合user变量)
{count action=table table_site=news_comment uid=$user.id} // news是模块名称可以随意修改成为自己的
5、用户的关注量(配合空间插件)(配合user变量)
{count action=table table=member_friend uid=$user.id}
6、用户的被关注量/粉丝量(配合空间插件)(配合user变量)
{count action=table table=member_friend touid=$user.id}
百度地图调用
一、函数名称
dr_baidu_map
需要安装官方版的<百度地图字段插件>
二、参数值
参数 | 介绍 |
---|---|
1 | 地图坐标 |
2 | 显示等级,越高越详细,默认15 |
3 | 地图宽度 |
4 | 地图高度 |
5 | 百度地图密钥 |
四、返回值
返回地图图片
五、模板示例
{dr_baidu_map('116.332979,39.976004', 15, 600, 400, "您的密钥")}
腾讯地图
一、函数名称
dr_qq_map(已废弃)
二、参数值
参数 | 介绍 |
---|---|
1 | 地图坐标 |
2 | 显示等级,越高越详细,默认15 |
3 | 地图宽度 |
4 | 地图高度 |
5 | 1表示不显示动态坐标移动标识 |
四、返回值
返回地图图片
五、模板示例
{dr_qq_map('116.332979,39.976004', 15, 600, 400)} {dr_qq_map('116.332979,39.976004', 15, 600, 400, 1)}
dr_date 时间输出
一、时间显示函数
{dr_date(时间戳数字, "显示参数")}
显示参数格式:
d - 一个月中的第几天(从 01 到 31) D - 星期几的文本表示(用三个字母表示) j - 一个月中的第几天,不带前导零(1 到 31) l('L' 的小写形式)- 星期几的完整的文本表示 N - 星期几的 ISO-8601 数字格式表示(1 表示 Monday[星期一],7 表示 Sunday[星期日]) S - 一个月中的第几天的英语序数后缀(2 个字符:st、nd、rd 或 th。与 j 搭配使用) w - 星期几的数字表示(0 表示 Sunday[星期日],6 表示 Saturday[星期六]) z - 一年中的第几天(从 0 到 365) W - 用 ISO-8601 数字格式表示一年中的星期数字(每周从 Monday[星期一]开始) F - 月份的完整的文本表示(January[一月份] 到 December[十二月份]) m - 月份的数字表示(从 01 到 12) M - 月份的短文本表示(用三个字母表示) n - 月份的数字表示,不带前导零(1 到 12) t - 给定月份中包含的天数 L - 是否是闰年(如果是闰年则为 1,否则为 0) o - ISO-8601 标准下的年份数字 Y - 年份的四位数表示 y - 年份的两位数表示 a - 小写形式表示:am 或 pm A - 大写形式表示:AM 或 PM B - Swatch Internet Time(000 到 999) g - 12 小时制,不带前导零(1 到 12) G - 24 小时制,不带前导零(0 到 23) h - 12 小时制,带前导零(01 到 12) H - 24 小时制,带前导零(00 到 23) i - 分,带前导零(00 到 59) s - 秒,带前导零(00 到 59) u - 微秒(PHP 5.2.2 中新增的) e - 时区标识符(例如:UTC、GMT、Atlantic/Azores) I(i 的大写形式)- 日期是否是在夏令时(如果是夏令时则为 1,否则为 0) O - 格林威治时间(GMT)的差值,单位是小时(实例:+0100) P - 格林威治时间(GMT)的差值,单位是 hours:minutes(PHP 5.1.3 中新增的) T - 时区的简写(实例:EST、MDT) Z - 以秒为单位的时区偏移量。UTC 以西时区的偏移量为负数(-43200 到 50400) c - ISO-8601 标准的日期(例如 2013-05-05T16:34:42+00:00) r - RFC 2822 格式的日期(例如 Fri, 12 Apr 2013 12:01:05 +0200) U - 自 Unix 纪元(January 1 1970 00:00:00 GMT)以来经过的秒数
例如内容页中输出更新时间updatetime
{dr_date($_updatetime, "Y年m月")} 输出 2018年3月 {dr_date($_updatetime, "Y/m")} 输出 2018/3 中文星期几: {php echo str_replace(['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'], ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日'], dr_date($_updatetime,'l'));}
中文月份:
{php echo str_replace(['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'], dr_date($_updatetime,'M'));}
1、在循环标签内的输出更新时间updatetime
{dr_date($t._updatetime, 'Y-m-d')} 输出为 2020-01-31 自定义日期,可以参照‘显示参数’来替换 'Y-m-d'
用法记住是:$t._updatetime
2、在show.html详情页面的用发是$_updatetime
二、个性化时间显示函数
{dr_fdate(时间戳数字)}
输出,xx秒之前,xx天,xx月
例如内容页中输出更新时间updatetime
{dr_fdate($_updatetime)}
栏目面包屑 dr_catpos
一、函数名称
dr_catpos
二、函数介绍
栏目包屑导航
三、参数值
参数 | 介绍 |
---|---|
$catid | 栏目id |
$symbol | 层级之间的间隔符号,默认为 >,也可以设置为空表示不需要间隔符号 |
$url | 是否显示url,true表示加上a链接 |
$html | 显示模板规则,[name]表示栏目名称,[url]表示栏目地址 |
$dirname | 指定模块目录,不填写表示默认当前模块目录 |
四、返回值
栏目层级关系字符
五、模板示例
1、栏目页面和内容页面的面包屑写法
{dr_catpos($catid, '', true, '
2、不加链接的样式:新闻动态>PHP技术
{dr_catpos($catid, '>')}
提取html中的图片
函数名:
dr_get_content_img
例如提取show.html中的内容字段中的全部图片,内容字段是content,那么写法是:
{php $imgs = dr_get_content_img($content);} {loop $imgs $img}{/loop} 图片数量:{count($imgs)}
提取3张图片写法:
{php $imgs = dr_get_content_img($content, 3);} {loop $imgs $img}{/loop} 图片数量:{count($imgs)}
提取一张图片的写法:
{php $imgs = dr_get_content_img($content, 1);}
下载链接函数
函数名称:
dr_down_file(文件ID, '自定义文件命名')
用于生产一个文件下载的地址,例如(164是随便找的文件id号测试)
本函数只能在动态模式或伪静态模式下使用,真静态页面无法使用该函数(会提示:此附件下载链接已经失效),真静态请使用dr_get_file函数。
下载文件
下载成功时就会显示新的名字:
注意:本函数只能对本地文件才具备重命名的效果,远程文件按原来的文件名显示下载
需要在后台-权限-用户权限-选择某一个规则-开启下载权限:
字符截取长度截取
一、函数名称
dr_strcut
二、函数介绍
截取字符串或文字标题长度
三、参数值
参数 | 介绍 |
---|---|
$string | 字符串 |
$length | 截取长度 |
$dot | 补全字符串 |
四、返回值
截取后的字符串
五、模板示例
{dr_strcut('宸逸CMS开发框架', 10)} // 显示10个字符,余下用...代替 {dr_strcut('宸逸CMS开发框架', 10, '')} // 显示10个字符,余下不显示 {dr_strcut('宸逸CMS开发框架', 10, '>>>')} // 显示10个字符,余下用>>>代替
show.html变量赋值方法
{dr_strcut($title, 40)} //标题显示40个字符,其他用...代替
备注:
$title // 需要替换成为您想要展示内容的字段标签,如标题/简介/内容等
附件信息
一、函数名称
\Phpcmf\Service::C()->get_attachment($id)
二、函数介绍
获取附件的基本信息,如作者、大小、地址、文件类型等
三、参数值
参数 | 介绍 |
---|---|
$id | 附件id号 |
四、返回值
返回文件信息数组
Array ( [id] => 附件id [uid] => 作者id [author] => 作者名称 [filesize] => 文件大小(单位字节,可以用函数dr_format_file_size转换) [fileext] => 文件扩展名 [filename] => 文件的名称 [attachment] => 附件地址 )
五、调用方式
1、调用文件作者
{php $data = \Phpcmf\Service::C()->get_attachment(附件id);} {$data.author}
2、调用附件名称
{php $data = \Phpcmf\Service::C()->get_attachment(附件id);} {$data.filename}
3、附件大小
{php $data = \Phpcmf\Service::C()->get_attachment(附件id);} {dr_format_file_size($data.filesize)}
4、附件扩展名
{php $data = \Phpcmf\Service::C()->get_attachment(附件id);} {$data.fileext}
5、下载附件
下载链接:{dr_down_file(附件ID)}
缩略图片函数
缩略图函数:
dr_thumb(图片id, 宽度, 高度, 是否水印, 缩放标准值, 是否下载远程图片进行剪切)
同一页面多次使用本函数时,首次加载会消耗较多的内存资源。
缩略图地址:{dr_thumb($字段名, 100, 100)}
缩略图带上水印地址:{dr_thumb($字段名, 100, 100, 1)}
此函数默认情况强制将图片设置为固定高宽,如果不规则图片会存在挤压效果
自适应宽度,比如你设置了100x100的缩略图,高度会限定100,宽度可能会小于100,宽度由图片本身比例决定;
可以改变第四个参数值来按高度或宽度自适应
强制高度、强制宽度:{dr_thumb($字段名, 100, 100, 0)}
宽度固定、高度自适应:{dr_thumb($字段名, 100, 100, 0, 'width')}
高度固定、宽度自适应:{dr_thumb($字段名, 100, 100, 0, 'height')}
从中间开始剪切,高度宽度固定:{dr_thumb($字段名, 100, 100, 0, 'crop')}
如果带水印,就把第三个参数设置1
效果如下图所示:
关于远程图片可以使用以下参数进行下载后再剪切,这样会对远程服务器参数额外的流量
缩略图地址:{dr_thumb($字段名, 100, 100, 0, '', 1)}
这篇教程是专门对远程图片进行在云端操作的用法:https://www.xunruicms.com/doc/889.html
html实体字符转换函数
函数名称:dr_code2html(htm变量, 是否所有转换, 转换类型)
函数作用:把html转义乱码转换为实体代码,比如以下的转义乱码就需要使用本函数转换一下才能实体化显示
参数说明:
htm变量:输入字符串。
是否所有转换:默认为false
转换类型:以下一个或多个标志的位掩码,它们指定如何处理引号以及要使用的文档类型
举例说明:
1、将特殊的HTML实体转换回字符
{dr_code2html($html变量)}
2、将所有HTML实体转换为它们的适用字符
{dr_code2html($html变量, true)}
提取HTML标签的任意属性值
函数名:
dr_get_content_url
例如提取show.html中的内容字段中的全部视频地址,内容字段是content,那么写法是:
{php $videos = dr_get_content_url($content, 'src', 'mp4');} {loop $videos $img} 地址:{$img} {/loop} 视频数量:{count($videos)}
提取3张视频地址写法:
{php $imgs = dr_get_content_url($content, 'src', 'mp4', 3);} {loop $videos $img} 地址:{$img} {/loop} 视频数量:{count($videos)}
提取一张视频地址的写法:
{php $videos = dr_get_content_url($content, 'src', 'mp4', 1);} 地址:{$videos[0]}
提取指定jpg图片地址:
{php $imgs = dr_get_content_url($content, 'src', 'jpg');} {loop $imgs $img}{/loop} 图片数量:{count($imgs)}
移动端地址转化
将指定pc地址转为对应的移动端地址
函数名称:
dr_to_url
循环体示例,以t前缀为例:
{dr_to_url($t.url)}
show.html内容详情页面:
{dr_to_url($url)}
将域名替换为www.a.com
例如当前url是:www.主站.com/show2.html,打算替换成:www.a.com/show2.html。
show.html内容详情页面:
{dr_to_url($url, 'www.a.com')}
提取关键词数组
函数名:
dr_get_content_kws
例如提取show.html中的,那么写法是:
{php $kws = dr_get_content_kws($keywords, '模块目录需要填写');}
{loop $kws $name00 $url00}
{$url00}
{$name00}
{/loop}
其中,keywords表示关键词的字段,如果在循环中,可以加上前缀,例如 $t.keywords
{php $kws = dr_array2cut(dr_get_content_kws($keywords, '模块目录'), 3);}
{loop $kws $name00 $url00}
{$url00}
{$name00}
{/loop}
同理,循环体写法是:
{php $kws = dr_get_content_kws($t.keywords, '模块目录需要填写');} 这里的t.是循环体的前缀,随机变化
{loop $kws $name00 $url00}
{$url00}
{$name00}
{/loop}
路径补全 dr_text_full
将文本中的相对路径地址补全完整地址,形如以下格式:
将src和href中包含的相对路径转化为补全地址;
例如内容show.html模板写法为:
{dr_text_full($content)}
指定补全域名方式:
{dr_text_full($content, "http://www.xxx.com/")}