功能标签/辅助函数

来源:官方· 作者 jizhicms· 83次点击 · 5个月前

定义

功能标签是系统自带的一些标签以及函数使用,熟练掌握可以更好的制作模板。


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



被收藏 0  ∙  0 赞  
加入收藏
0 回复  
善言善语 (您需要 登录 后才能回复 没有账号 ?)

请先登录网站