模板制作教程:函数介绍

调用自定义资料

一、函数名称

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插件的关键词给文章内容加上关键词内链(如何构建自己的内链库)

{xunruicms_img_title}

show.html页面调用文章内容方法为:

{$content}

那么内链调用方法为:

{dr_neilian($content, 0, 1)}  内链在本页面打开,不重复出现
{dr_neilian($content, 0, 0)}  内链在本页面打开,可以重复出现
{dr_neilian($content, 1, 0)} 内链链接新页面打开,可以重复出现
{dr_neilian($content, 1, 1)} 内链链接新页面打开,并且只出现一次内链



方案二、将模块本身的关键词加入到内容中

文章内容内链调用函数的作用是将本文的关键字关联到文章内容中,并加上关键词高亮链接。

{xunruicms_img_title}

show.html页面调用文章内容方法为:

{$content}


那么内链调用方法为(4.5.2以上版本可用):

{dr_content_link($kws, $content)} 

如果只关联一次,可以这样调用
{dr_content_link($kws, $content, 1)}



内链效果:

image.png



如何使用网站表单构建自己的自定义内链库?

链接库生成:安装网站全局表单,新建一个表单,添加自定义字段  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自定义页面的名称
titleseo标题,只在自定义页面内容页出现在title标签中
keywordsseo关键词
descriptionseo描述信息
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菜单间的间隔符号,默认为>
$urlurl地址格式,必须存在{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地图高度
51表示不显示动态坐标移动标识


四、返回值

返回地图图片


五、模板示例

{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、栏目页面和内容页面的面包屑写法

{xunruicms_img_title}

{dr_catpos($catid, '', true, '
  •  [name]  
  • ')}


    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函数。


    下载文件

    下载成功时就会显示新的名字:

    {xunruicms_img_title}


    注意:本函数只能对本地文件才具备重命名的效果,远程文件按原来的文件名显示下载



    {xunruicms_img_title}

    需要在后台-权限-用户权限-选择某一个规则-开启下载权限:

    {xunruicms_img_title}

    字符截取长度截取

    一、函数名称

    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

    效果如下图所示:

    image.pngimage


    关于远程图片可以使用以下参数进行下载后再剪切,这样会对远程服务器参数额外的流量

    缩略图地址:{dr_thumb($字段名, 100, 100, 0, '', 1)}

    这篇教程是专门对远程图片进行在云端操作的用法:https://www.xunruicms.com/doc/889.html


    html实体字符转换函数

    函数名称:dr_code2html(htm变量, 是否所有转换, 转换类型)

    函数作用:把html转义乱码转换为实体代码,比如以下的转义乱码就需要使用本函数转换一下才能实体化显示


    参数说明:

    htm变量:输入字符串。

    是否所有转换:默认为false

    转换类型:以下一个或多个标志的位掩码,它们指定如何处理引号以及要使用的文档类型

    image


    举例说明:

    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


    只想输出3个词语写法
    {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/")}