极致CMS帮助文档极致CMS帮助文档
首页
论坛
视频
加群
工具
GitHub
首页
论坛
视频
加群
工具
GitHub
  • 引言
  • 条款
  • 起步
  • 基础标签

    • 系统配置
    • 配置栏目
    • 栏目导航
    • 面包屑导航
    • 栏目列表
    • 单页
    • 文章内容页
    • 商品内容页
    • 点击量
    • 点赞
    • 收藏
    • 评论
    • 购买
    • 轮播图/幻灯片
    • 友情链接
    • 网站底部
    • 自定义字段
    • TAG
    • 内链
    • 碎片化
  • LOOP标签

    • 基本用法
    • 分页
    • 空数据
    • tid
    • like
    • notlike
    • limit
    • jzattr
    • day
    • table
    • sql
    • jzcache
    • notjz
  • Screen筛选
  • 功能标签
  • 极致模型函数
  • 自定义路由
  • 相关统计
  • 邮箱配置
  • 多语言支持
  • 搜索模块

    • 单模型搜索
    • 多模型搜索
    • 搜索结果页
  • 留言模块

    • 基本用法
    • 高级用法
    • 搜索结果页
  • 自定义模块
  • 模板制作

    • 准备工作
    • 网站栏目
    • 页面规划
    • 自定义函数
    • 模板信息
    • 客户权限
    • 桌面设置
    • 上线部署
  • 模板列表
  • 插件相关

    • 安装卸载
    • 控制器方法覆盖(简单)
    • 控制器方法钩子(高级)
    • 覆盖Common公共控制器
    • 极致CMS升级插件
    • 系统API接口插件
    • 数据库修复插件
    • 多语言建站
    • 模板助手插件
    • 阿里云短信注册插件
    • 独立静态网站插件
    • 云储存插件
    • Excel导入导出插件
    • 后台登录安全插件
    • 屏蔽IP插件
    • 在线编辑模板插件
    • 生成多尺寸缩略图插件
    • 火车头采集Web发布插件
    • 伪原创插件
    • 留言发送邮箱插件
    • 留言提交安全插件
    • QQ一键登录插件
    • Skycaiji蓝天采集API接口插件
    • 多域名绑定插件
    • 百度SEO推送
    • 百度百家推送
    • 极致插件示例
    • 栏目便捷工具
  • 支付相关

    • 支付宝支付
    • 微信支付
    • 立即支付
    • 接入第三方支付
  • 会员模块

    • 页面模板说明
    • 个人中心
    • 我的资料/修改密码
    • 我的关注
    • 我的粉丝
    • 我的投稿
    • 我的收藏
    • 我的喜欢
    • 我的评论
    • 我的钱包
    • 购买记录
    • 我的购物车
    • 订单管理
    • 消息设置
    • 公开页
    • 会员登录
    • 会员注册
    • 忘记密码
    • 微信登录
  • 微信小程序

    • 开始起步
    • 小程序开发
    • API接口
    • 轮播图/幻灯片
    • 获取栏目信息
    • 获取内容详情
    • 留言交互
  • Windows部署
  • 宝塔一键部署
  • 伪静态配置
  • 系统架构
  • 数据字典
  • 视频教程
  • 版本更新
  • Vue & App接入(v2.5.2+)

    • 验证码
    • 上传文件
    • 会员注册
    • 会员登录
    • 找回密码
    • 获取用户信息
    • 修改用户信息
    • 我的文章
    • 发布文章
    • 删除文章
    • 获取单篇文章信息
    • 我的收藏
    • 收藏/取消收藏
    • 是否收藏
    • 我的点赞
    • 点赞/取消点赞
    • 是否点赞
  • 常见问题

    • 如何判断首页,栏目页,详情页,单页?
    • 如何调用关联和相关文章内容?
    • 搜索超出设定范围如何解决?
    • 判断用户是否购买商品?
    • 判断会员分组?
    • 如何输出内容图片?
    • 如何判断自己是否适合使用极致CMS?
    • ajax数据交互,加载更多功能实现?
    • 如何实现后台录入时自定义检测重复内容的功能?
  • 附录

    • 时间格式
    • 富文本编辑器
    • 二维码生成
    • 验证码生成
    • 自定义后台主页
    • 客户端判断
    • classtypedata数据详解
    • 文章归档
    • RSS
    • 制作内容分页
    • 各种时间查询问题解决
    • 更换编辑器

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

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

Edit this page
Last Updated:
Contributors: RMC
Prev
Screen筛选
Next
极致模型函数