功能标签是系统自带的一些标签以及函数使用,熟练掌握可以更好的制作模板。
fun 函数标签
此函数标签可以使用PHP的函数及系统函数
简单尝试
#输出当前年-月-日
{fun date('Y-m-d')}
#输出当前时间戳
{fun time()}
模板解析结果:
<?php echo date('Y-m-d');?>
<?php echo time();?>
if else 判断标签
此标签可以用于逻辑判断,制作模板会经常用到
经常会遇到js
内容导致标签报错,使用js
的时候,不要把{if
粘连在一起,要么换行,要么空几个空格,如:{ if
。切勿压缩代码,压缩代码很可能因为js
问题报错!
判断一个变量是否为真(true,有值,不为空,有内容)
{if($a)}
有内容这里输出
{else}
无内容
{/if}
判断取反,如果条件为假(false),则输出
{if(!$a)}
无内容
{else}
有内容这里输出
{/if}
判断两种条件同时成立,$a为真,$b也为真,输出某个东西
{if($a && $b)}
$a和$b都有数据,输出这里
{else}
有一个无数据,或者都没有数据
{/if}
判断两种条件,有一个为真,就输出来
{if($a || $b)}
$a和$b只要有一个为真,输出这里
{else}
$a和$b都不说真,输出这里
{/if}
三种条件以上以此类推...
foreach 循环标签
此标签循环的一般是数组,得先有数据才能进行循环,如果没有数据,或者变量未定义,则无法循环输出。
栏目列表
$v
是可以变化的,不是固定的。比如你可以设置为$s
$a
$b
$c
$aa
$bb
等等,推荐用字母,不能纯数字。
{foreach $lists as $v}
内部使用 $v 变量进行循环输出内容
{/foreach}
for 循环标签
for循环标签用的比较少,一般是循环次数使用
循环输出10次
{for $i=1;$i<=10;$i++}
这里会循环执行10次,第{$i}次
{/for}
dump 打印数据
可以打印所有模板中你想知道的变量和内容
如:{fun dump($type)}
newstr 字符串截取 内容截取
此函数可以截取中文和字母,不会出现乱码。注意:一个中文代表2个字符
{fun newstr('参数1','参数2')}
参数1:需要截取的字符串,可以是变量
参数2:截取的长度
截取标题的15个字长度
{loop table="article" isshow="1" limit="10" as="v"}
标题:{fun newstr($v['title'],30)}
{/loop}
温馨提示:大写字母占位比较大,但它是1个字符!
get_domain 获取网站域名,带http
{fun get_domain()}
GetIP 获取当前访问IP
{fun GetIP()}
webConf 获取配置内容
webConf('字段')
输出网站名称
{fun webConf('web_name')}
get_template 获取当前模板名
{fun get_template()}
adminInfo 获取管理员信息
adminInfo($id,$str=null)
$id : 管理员ID
$str: 管理员表字段,如:name
如果不填$str
则返回数组,填了则返回对应的值
输出管理员ID=1
的昵称
{fun adminInfo(1,'name')}
输出管理员ID=1
各种信息
{php
$admin = adminInfo(1);
/}
昵称:{$admin['name']}
电话:{$admin['tel']}
邮箱:{$admin['email']}
memberInfo 获取会员信息
memberInfo($id,$str=null)
$id : 会员ID
$str: 会员member表字段,如:username
如果不填$str
则返回数组,填了则返回对应的值
输出会员ID=1
的昵称
{fun memberInfo(1,'username')}
输出会员ID=1
各种信息
{php
$user = memberInfo(1);
/}
昵称:{$user['username']}
电话:{$user['tel']}
邮箱:{$user['email']}
current_url 获取当前链接
{fun current_url()}
checkClass 判断栏目下级
checkClass($pid,$tid)
判断$tid
这个栏目的下级是否包含$pid
$pid : 栏目ID
$tid : 栏目ID 返回 bool //false or true
判断栏目12是否为1的下级
{if(checkClass(12,1))}
是
{else}
不是
{/if}
formatTime 人性化时间显示
formatTime($sTime, $formt = 'Y-m-d')
$sTime
:时间戳$formt
:显示时间样式(如果超过人性化设定,则显示此格式,参考上面格式)
可能显示的类型:刚刚、x秒前、x分钟前、x小时前、x天前、x周前、x个月前、m月d日、Y-m-d
栏目列表页
{foreach $lists as $v}
时间:{fun formatTime($v['addtime'])}
{/foreach}
nl2br 输出换行
输出描述换行,文本框textarea换行
假设某个内容模型自定义字段 abc
,是一个 textarea
文本录入框,里面的内容用了 Enter
换行,你想要输出跟后台录入的一样的格式
{fun nl2br($jz['abc'])} //$jz['abc'] 只是一个举例的变量,根据不同情况,你可以替换你想要输出的内容
str_replace 字符串替换
str_replace($a,$b,$c)
$a
: 一个需要被替换的字符串$b
: 需要替换成为的字符串$c
: 原字符串
假设需要替换abcdef
里面的bc
换成123
{fun str_replace('bc','123','abcdef')} //输出 a123def
如果你想替换内容标题里面的
测试
换成最新
{fun str_replace('测试','最新',$jz['title'])} //内容详情页内才可以写 $jz ,其他页面,请根据情景替换变量
stripos 判断字符串是否含有字符串
stripos($a,$b)
//忽略大小写strpos($a,$b)
//区分大小写$a
: 目标字符串$b
: 判断的字符串
判断内容是否含有 极致
{if(strpos($jz['body'],'极致')!==false)}
含有
{else}
不含有
{/if}
// $jz['body'] 仅在内容页有效,其他页面,请根据情况而定
htmldecode 去除HTML标签,同时去除空格
经常会遇到去除HTML显示文字的需求,这个函数就可以实现
去除内容的HTML标签,只输出文字
{fun htmldecode($jz['body'])} // $jz['body'] 仅在内容页有效,其他页面,请根据情况而定
htmlspecialchars_decode 输出原HTML代码
由于保持的代码会被编译,所以使用这个函数可以还原代码
{fun htmlspecialchars_decode($abc)}
explode 分割字符串
此函数会出现在tags输出的时候,由于tags存储的内容是逗号拼接的,如果要分别输出每个tags并且加上URL,就需要用这个函数将其拆分成数组
explode($a,$b)
$a
: 拆分字符$b
: 拆分对象,字符串
输出文章tags,且加上URL
{foreach explode(',',$jz['tags']) as $v}
{if($v)}
tags : <a href="/tags/index?tagname={$v}" target="_blank">{$v}</a>
{/if}
{/foreach}
//仅在内容详情页使用 $jz['tags'] ,其他页面,请根据情况来写
trim 过滤字符串两边的字符
如果你发现一个字符串两变有一些其他不相关的字符,那么你可以通过这个函数去掉,比如空格/逗号等等,只是去除两边,不能过滤中间的
去掉tags两边都逗号
{fun trim($jz['tags'],',')} // $jz['tags']仅在内容页有效,另外,由于tags存储是 `,测试,极致,` 这种方式,多了两边都 `,` ,所以要过滤掉。
jz_follow 获取用户的关注数
jz_follow($member_id)
$member_id : 用户ID
获取当前登录会员的关注数
{fun jz_follow($member['id'])}
jz_fans 获取用户的粉丝数
jz_fans($member_id)
$member_id : 用户ID
获取当前登录会员的粉丝数
{fun jz_fans($member['id'])}
isfollow 判断是否关注
isfollow($other_id,$member_id)
$other_id
: 其他人都ID$member_id
: 判断人ID 判断$member_id
是否关注了$other_id
gourl 输出详情链接
此函数一般不用,当你使用
loop
输出非当前模型URL
的时候可能用得到。
输出收藏的详情链接
{loop table="shouchang" as="v"}
{php
$molds = $classtypedata[$v['tid']]['molds'];
$info = M($molds)->find(['isshow'=>1,'id'=>$v['aid']]);
/}
{if($info)}
收藏内容详情链接:{fun gourl($info)}
{else}
已被删除
{/if}
{/loop}
jzresize 自定义图片裁剪
src_image
原图链接 根目录绝对链接,支持远程图片out_image
生成图链接 写文件名即可mode
1
:按尺寸裁剪2
:按比例裁剪out_width
生成的宽(比例)out_height
生成的高(比例)img_quality
压缩比例(PNG无法压缩)direct
1
:中间开始裁剪0
:左上角开始裁剪debug
1
:调试状态,每次请求都生成缓存0
:会直接调用已生成的缩略图jzresize($src_image,$out_width = NULL, $out_height = NULL, $mode = 1, $out_image = NULL, $direct = 1 ,$debug = 0 , $img_quality = 90 )
输出栏目列表 200px × 100px
的缩略图
{foreach $lists as $v}
{fun jzresize($v['litpic'],200,100)}
{/foreach}
输出栏目列表缩略图比例为 宽 : 高 = 2 : 1
{foreach $lists as $v}
{fun jzresize($v['litpic'],2,1,0)}
{/foreach}
注意:如果是调试,必须填
debug=1
,否则每次都要清空图片缓存cache/image
,后台清楚缓存
可以选择删除
如:{fun jzresize($v['litpic'],2,1,0,null,1,1)}