FastAdmin CMS插件 标签使用说明
前言
功能特性
(摘录自官方CMS介绍页。)
基于FastAdmin和ThinkPHP5进行开发的CMS内容管理系统,拥有PC版和小程序版本,提供CMS全部源代码和CMS小程序全部源代码
所有源代码无加密、无后门。一次购买永久免费升级使用。
1. 模版基础
1.1 目录与结构说明
插件根目录 /view下的文件为可使用的模板文件,您也可以自己建立目录来设计新的模板。
/view [模板目录]
│
├─default -------------------[默认模板]
├─├─common ------------------[公共模版块]
├─│ comment.html ----------[评论模版]
├─│ downloaditem.html -----[]
├─│ fields.html -----------[]
├─│ index_list.html -------[]
├─│ item_download.html ----[]
├─│ item_news.html --------[]
├─│ item_product.html -----[]
├─│ item.html -------------[]
├─│ layout.html -----------[]
├─│ sidebar.html ----------[]
│ channel_download.html ---[付费阅读栏目首页]
│ channel_news.html -------[新闻栏目首页]
│ channel_product.html ----[产品栏目首页]
│ channel.html ------------[栏目首页]
│ diyform.html ------------[自定义表单]
│ index.html --------------[网站首页]
│ list_download.html ------[付费阅读列表页]
│ list_news.html ----------[新闻列表页]
│ list_product.html -------[产品列表页]
│ list.html ---------------[列表页]
│ page.html ---------------[单页]
│ search.html -------------[搜索页]
│ show_download.html ------[付费阅读内容页]
│ show_news.html ----------[新闻内容页]
│ show_product.html -------[产品内容页]
│ show.html ---------------[内容页]
│ tags.html ---------------[标签页]
1.2 标签库
在CMS插件中的前端视图模板中大量使用了自定义标签,我们在修改或制作模板的时候,可以方便快捷的使用自定义标签来调用我们相关的数据。
78/n3cwalnOKq3zmIfJpFw== (ThinkPHP默认标签的详细用法请参考完全开发手册)
标签库位于/addons/cms/taglib/Cms.php
文件,我们可以看到标签库有定义可调用的标签和属性,以下是自带的标签
'channel',
'archives',
'tags',
'block',
'config',
'page',
'diyform',
'nav',
'execute',
'query',
'prevnext',
'blocklist',
'commentlist',
'breadcrumb' ,
'channellist',
'arclist',
'tagslist',
'pagefilter',
'pageorder',
'pagelist',
'spagelist',
'spageinfo',
'pageinfo',
'commentinfo',
1.3 基础标签格式
基础标签格式为系统内容所有的数据调用格式,请牢记这些格式。此处只讲解格式,具体调用请查看具体的标签调用文档。
1.3.1 数据调用标签
本标签用于调用CMS标签库中定义的数据。
Jm4yMXp+Pc2YqOQKd8AA+A==
<!-- 这是栏目循环的调用 -->
{cms:channellist id="nav" type="top" condition="1=isnav" }
{$nav.name}
{/cms:channellist}
<!-- 这是导航的调用 -->
{cms:nav maxlevel="3" cache="0" /}
1.3.2 变量标签
变量仍然由"{}"英文大括号包围,内部则是$开头的变量名,多维变量用“.”英文句号分割。
<!-- 模版输出 -->
{$nav.name}
<!-- PHP原生输出 -->
<?php echo $nav['name']; ?>
也可以使用原生php自定义变量,在模版中输出,如:
<!-- PHP代码 -->
<?php
$code = 123;
$image = array(
'url' => 'http://www.baidu.com/img/baidu.gif',
'color' => 'red',
'size' => '50',
);
?>
<!-- 模版输出 -->
{$code} {$image.color}
<!-- 输出结果 -->
123 red
1.4 系统信息调用
1.4.1 FastAdmin框架系统信息
FastAdmin框架中的系统信息变量,在系统配置中可以定义他们的值。对应 application/extra/site.php
文件中定义的。
'name',
'beian',
'cdnurl',
'version',
'timezone',
'forbiddenip',
'languages' =>
array (
'backend',
'frontend',
),
'fixedpage',
'categorytype' =>
array (
'default',
'page',
'article',
'test',
),
'configgroup' =>
array (
'basic',
'email',
'dictionary',
'user',
'example',
),
'mail_type',
'mail_smtp_host',
'mail_smtp_port',
'mail_smtp_user',
'mail_smtp_pass',
'mail_verify_type',
'mail_from',
调用方法如下
<!-- 格式:{$site.变量名} -->
{$site.name}
<!-- 注意:数组类变量不能直接调用 {$site.languages}会报错 -->
<?php print_r($site['languages']); ?>
1.4.2 CMS配置变量
CMS插件中也定义了一些变量,在插件配置中可以定义具体的值。对应addons/cms/config.php
'sitename'
'title'
'keywords'
'description'
'theme'
'qrcode'
'wxapp'
'donateimage'
'default_archives_img'
'default_channel_img'
'default_block_img'
'default_page_img'
'domain'
'rewrite' =>
array (size=8)
'index/index'
'archives/index'
'tags/index'
'page/index'
'search/index'
'channel/index'
'diyform/index'
'wxappid'
'wxappsecret'
'apikey'
'archiveseditmode'
'channelallocate'
'conactqq'
'autolinks' =>
array (size=2)
'服务器'
'阿里云'
调用方法如下
<!-- 格式:{$config.变量名} -->
{$config.sitename}
<!-- 注意:数组类变量不能直接调用 {$config.autolinks}会报错 -->
<?php print_r($config['autolinks']); ?>
1.4.3 ThinkPHP原生变量
当然FastAdmin也支持原生变量的输出。
bdyUWpTgrB6/EwosqWLelA== 支持输出
$_SERVER
、$_ENV
、$_POST
、$_GET
、$_REQUEST
、$_SESSION
和$_COOKIE
变量。UrFrD/seoZcowR5aIuDeRQ== 调用示例:
{$Think.server.script_name} // 输出$_SERVER['SCRIPT_NAME']变量
{$Think.session.user_id} // 输出$_SESSION['user_id']变量
{$Think.get.pageNumber} // 输出$_GET['pageNumber']变量
{$Think.cookie.name} // 输出$_COOKIE['name']变量
还可以输出常量
{$Think.const.APP_PATH}
或者直接使用
{$Think.APP_PATH}
输出配置参数使用:
{$Think.config.default_module}
{$Think.config.default_controller}
输出语言变量可以使用:
{$Think.lang.page_error}
{$Think.lang.var_error}
1.5 请求参数的输出
同样模板也支持直接输出Request
请求对象的方法参数。
OnLhtp8ebwCkS5wtwUsVng== 格式:$Request.方法名.参数
f7hR7lVsic63PvwrWSYzRg== 调用示例:
{$Request.get.id}
{$Request.param.name}
以$Request.
开头的变量输出会认为是系统Request请求对象的参数输出。
CAV8sf+R5nefKVbyhR/HKg== 支持
Request
类的大部分方法,但只支持方法的第一个参数。WPF9H2tHbNEiAIta4A9pgQ== 下面都是有效的输出:
// 调用Request对象的get方法 传入参数为id
{$Request.get.id}
// 调用Request对象的param方法 传入参数为name
{$Request.param.name}
// 调用Request对象的param方法 传入参数为user.nickname
{$Request.param.user.nickname}
// 调用Request对象的root方法
{$Request.root}
// 调用Request对象的root方法,并且传入参数true
{$Request.root.true}
// 调用Request对象的path方法
{$Request.path}
// 调用Request对象的module方法
{$Request.module}
// 调用Request对象的controller方法
{$Request.controller}
// 调用Request对象的action方法
{$Request.action}
// 调用Request对象的ext方法
{$Request.ext}
// 调用Request对象的host方法
{$Request.host}
// 调用Request对象的ip方法
{$Request.ip}
// 调用Request对象的header方法
{$Request.header.accept-encoding}
1.6 判断与循环
1.6.1 比较标签
用于对变量的简单比较,如相等、不等、大于、小于等比较。基本格式如下:
{比较标签 name="变量" value="值"}
内容
{else/}
内容
{/比较标签}
系统支持的比较标签以及所表示的含义分别是:
标签 | 含义 |
---|---|
eq或者 equal | 等于 |
neq 或者notequal | 不等于 |
gt | 大于 |
egt | 大于等于 |
lt | 小于 |
elt | 小于等于 |
heq | 恒等于 |
nheq | 不恒等于 |
他们的用法基本是一致的,区别在于判断的条件不同。
1.6.2 IF判断
由于if标签的condition属性里面基本上使用的是php语法,尽可能使用比较标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。
基本用法示例:
{if condition="($name == 1) OR ($name > 100) "} value1
{elseif condition="$name eq 2"/}value2
{else /} value3
{/if}
除此之外,我们可以在condition属性里面使用php代码,例如:
{if condition="strtoupper($user['name']) neq 'THINKPHP'"}ThinkPHP
{else /} other Framework
{/if}
详细用法请参考ThinkPHP5完全开发手册中模版部分。
1.6.3 SWITCH标签
用法:
{switch name="变量" }
{case value="值1" break="0或1"}输出内容1{/case}
{case value="值2"}输出内容2{/case}
{default /}默认情况
{/switch}
使用方法如下:
{switch name="User.level"}
{case value="1"}value1{/case}
{case value="2"}value2{/case}
{default /}default
{/switch}
其中name属性可以使用函数以及系统变量,例如:
{switch name="Think.get.userId|abs"}
{case value="1"}admin{/case}
{default /}default
{/switch}
1.6.4 范围判断
范围判断标签包括in notin between notbetween四个标签,都用于判断变量是否中某个范围。
IN和NOTIN
用法: 假设我们中控制器中给id赋值为1:
$id = 1;
$this->assign('id',$id);
我们可以使用in标签来判断模板变量是否在某个范围内,例如:
{in name="id" value="1,2,3"}
id在范围内
{/in}
BETWEEN 和 NOTBETWEEN
可以使用between标签来判断变量是否在某个区间范围内,可以使用:
{between name="id" value="1,10"}
输出内容1
{/between}
同样,也可以使用notbetween标签来判断变量不在某个范围内:
{notbetween name="id" value="1,10"}
输出内容2
{/notbetween}
也可以使用else标签把两个用法合并,例如:
{between name="id" value="1,10"}
输出内容1
{else/}
输出内容2
{/between}
RANGE
也可以直接使用range标签,替换前面的判断用法:
{range name="id" value="1,2,3" type="in"}
输出内容1
{/range}
其中type属性的值可以用in/notin/between/notbetween,其它属性的用法和IN或者BETWEEN一致。
1.6.5 PRESENT NOTPRESENT标签
present标签用于判断某个变量是否已经定义,用法:
{present name="name"}
name已经赋值
{else /}
name还没有赋值
{/present}
{notpresent name="name"}
name还没有赋值
{/notpresent}
1.6.6 EMPTY NOTEMPTY 标签
empty标签用于判断某个变量是否为空,用法:
{empty name="name"}
name为空
{else /}
name不为空
{/empty}
{notempty name="name"}
name不为空
{/notempty}
1.6.7 DEFINED 标签
DEFINED标签用于判断某个常量是否有定义,用法如下:
{defined name="NAME"}
NAME常量已经定义
{else /}
NAME常量未定义
{/defined}
{notdefined name="NAME"}
NAME常量未定义
{/notdefined}
name属性的值要注意严格大小写
1.7 数据函数处理
我们往往需要对模板输出变量使用函数,可以使用:
{$data.name|md5}
编译后的结果是:
<?php echo (md5($data['name'])); ?>
如果函数有多个参数需要调用,则使用:
{$create_time|date="y-m-d",###}
表示date函数传入两个参数,每个参数用逗号分割,这里第一个参数是y-m-d
,第二个参数是前面要输出的create_time
变量,因为该变量是第二个参数,因此需要用###标识变量位置,编译后的结果是:
<?php echo (date("y-m-d",$create_time)); ?>
如果前面输出的变量在后面定义的函数的第一个参数,则可以直接使用:
{$data.name|substr=0,3}
表示输出
<?php echo (substr($data['name'],0,3)); ?>
虽然也可以使用:
{$data.name|substr=###,0,3}
但完全没用这个必要。
还可以支持多个函数过滤,多个函数之间用“|”分割即可,例如:
{$name|md5|strtoupper|substr=0,3}
编译后的结果是:
<?php echo (substr(strtoupper(md5($name)),0,3)); ?>
函数会按照从左到右的顺序依次调用。
如果你觉得这样写起来比较麻烦,也可以直接这样写:
{:substr(strtoupper(md5($name)),0,3)}
变量输出使用的函数可以支持内置的PHP函数或者用户自定义函数,甚至是静态方法。
1.8 模版引入
传统方式的导入外部JS
和CSS
文件的方法是直接在模板文件使用:
<script type='text/javascript' src='/static/js/common.js'>
<link rel="stylesheet" type="text/css" href="/static/css/style.css" />
系统提供了专门的标签来简化上面的导入:
{load href="/static/js/common.js" /}
{load href="/static/css/style.css" /}
并且支持同时加载多个资源文件,例如:
{load href="/static/js/common.js,/static/css/style.css" /}
系统还提供了两个标签别名js
和css
用法和load
一致,例如:
{js href="/static/js/common.js" /}
{css href="/static/css/style.css" /}
2. 模版页面标签
包含某文件时传参: {include file="common/comment" type="archives" aid="__ARCHIVES__.id"}
在被包含的文件调用[type] $[aid]
2.1 栏目列表页
channellist
标签介绍:用于调用栏目的列表
适用范围:全部
标签参数:
id:循环变量名
key:循环索引名
row:行数
limit:行数
empty:为空时显示的信息
mod:取模基数,常用于控制多少条数据后换行、变色等
cache:缓存时间,为0则不缓存,为true则永久缓存
orderby:排序字段,支持id,createtime,updatetime,rand(随机),weigh(权重)
orderway:排序方式,asc=正序,desc=倒序
imgwidth:图片宽度
imgheight:图片高度
condition:筛选条件,可使用SQL字段筛选
model:模型ID
field:调用字段,默认为*
type:指定类型,top=顶级栏目,brother=兄弟栏目,son=子栏目,sons=子孙栏目
typeid:指定类型关联的ID,如果type为空,这里可指定栏目的ID集合
调用示例:
调用自定义字段一定要记得清缓存
判断是栏目中的最后一个 {if !($subbb!=end($__LIST__))}cfbf__item--focus{/if}
不管就计算数组长度和key对比 {php}if($ab==1)$ad=count($__LIST__);{/php}{if $ad==$ab}cfbf__item--focus{/if}
/runtime/temp里存着解析过的临时文件,可以看标签解析成了什么样
{cms:channellist id="channel" type="son" typeid="$__CHANNEL__.id"}
//这里面可以调用cms_channel表的所有字段数据及其它扩展信息
{$channel.name}
{$channel.id}
//栏目组合链接
{$channel.textlink}
//栏目链接
{$channel.url}
//是否有缩略图
{$channel.hasimage}
//图片组合链接
{$channel.imglink}
//图片HTML
{$channel.img}
{/cms:channellist}
默认模版中的应用代码:
{cms:channellist id="nav" type="top" condition="1=isnav"}
<!--判断是否有子级或高亮当前栏目-->
<li class="{if $nav.has_child}dropdown{/if} {if $nav->is_active} active{/if}">
<a href="{$nav.url}" {if $nav.has_child} data-toggle="dropdown" {/if}>{$nav.name}{if $nav.has_child} <b class="caret"></b>{/if}</a>
<ul class="dropdown-menu" role="menu">
{cms:channellist id="sub" type="son" typeid="$nav['id']" condition="1=isnav"}
<li><a href="{$sub.url}">{$sub.name}</a></li>
{/cms:channellist}
</ul>
</li>
{/cms:channellist}
2.2 文档列表页
arclist
标签介绍:用于调用文档的列表
适用范围:全部
标签参数:
id:循环变量名
key:循环索引名
row:行数
limit:行数
empty:为空时显示的信息
mod:取模基数,常用于控制多少条数据后换行、变色等
cache:缓存时间,为0则不缓存,为true则永久缓存
orderby:排序字段,支持id,createtime,updatetime,rand(随机),weigh(权重),views(浏览次数)
orderway:排序方式,asc=正序,desc=倒序
imgwidth:图片宽度
imgheight:图片高度
condition:筛选条件,可使用SQL字段筛选
model:模型ID
channel:栏目ID或栏目ID集合
tags:标签
addon:副本字段集,如果为true则表示所有副表字段,多个字段以,进行分隔
field:调用字段,默认为*
flag:标志
调用示例:
{php} $s1=explode(",",$item['skds']);{/php}
{foreach $s1 as $key=>$val}
<!-- {$val}-->
{cms:query sql="SELECT `fa_cms_archives`.`title`,`fa_cms_addonmsjx`.`tealimage` FROM `fa_cms_archives` , `fa_cms_addonmsjx` where `fa_cms_archives`.id=$val and `fa_cms_archives`.id=`fa_cms_addonmsjx`.id
LIMIT 6" id="tea"}
<p class="teacher-block clearfix">
<img class="teacher-face" src="{$tea.tealimage}" alt="">
<span class="eui f14 teacher-name">{$tea.title}</span>
</p>
{/cms:query}
{/foreach}
{cms:arclist id="item" row="8" orderby="id" orderway="desc"}
//这里面可以调用cms_archives表的所有字段数据,如果启用了addon属性还可以调用副表数据
{$item.title}
{$item.image}
{$item.keywords}
//是否有预览图
{$item.hasimage}
//文档组合链接
{$item.textlink}
//文档链接
{$item.url}
//栏目组合链接
{$item.channellink}
//图片组合链接
{$item.imglink}
//图片HTML
{$item.img}
{/cms:arclist}
默认模版中的应用代码(栏目列表与内容列表):
{cms:channellist id="channel" type="son" typeid="$__CHANNEL__.id"}
<div class="col-xs-12 col-sm-6">
<h3>{$channel.textlink} <em><a href="{$channel.url}">{:__('More')}</a></em></h3>
{cms:arclist id="row" channel="$channel.id" limit="0,1"}
<div class="media">
<div class="media-left">
<a href="{$row.url}" {if $row.style}style="{$row.style_text}"{/if}>
<div class="embed-responsive embed-responsive-4by3 img-zoom">
<img class="embed-responsive-item media-object" width="64" height="64" src="{$row.image}">
</div>
</a>
</div>
<div class="media-body">
<h4 class="media-heading">{$row.textlink}</h4>
<p>{$row.description}</p>
</div>
</div>
{/cms:arclist}
<ul class="list-unstyled inner-list">
{cms:arclist id="row" channel="$channel.id" limit="1,5"}
<li>
<a href="{$row.url}" {if $row.style}style="{$row.style_text}"{/if}>{$row.title}</a>
<span class="pull-right">{$row.publishtime|date='m-d',###}</span>
</li>
{/cms:arclist}
</ul>
</div>
{/cms:channellist}
2.3 栏目详情标签
channel
标签介绍:用于调用栏目的字段信息
适用范围:频道页、列表页、详情页
调用示例:
//栏目ID
{cms:channel name="id" /}
//栏目名称
{cms:channel name="name" /}
//栏目图片
{cms:channel name="image" /}
2.4 文档详情标签
archives
标签介绍:用于显示文档主表和副表字段信息
适用范围:详情页
调用示例:
//文档查看次数
{cms:archives name="views" /}
//文档发布时间
{cms:archives name="createtime|date='d',###" /}
//文档内容
{cms:archives name="content" /}
//调用副表字段 example1
{cms:archives name="example1" /}
2.5 单页详情标签
page
标签介绍:用于调用单调的字段信息
适用范围:单页详情页
调用示例:
//调用单页标题
{cms:page name="title" /}
//调用单页内容
{cms:page name="content" /}
2.5 Tag标签列表页
tagslist
标签介绍:用于调用标签的列表
适用范围:全部
标签参数:
id:循环变量名
key:循环索引名
row:行数
limit:行数
empty:为空时显示的信息
mod:取模基数,常用于控制多少条数据后换行、变色等
cache:缓存时间,为0则不缓存,为true则永久缓存
orderby:排序字段,支持id,createtime,updatetime,rand(随机),weigh(权重),views(浏览次数)
orderway:排序方式,asc=正序,desc=倒序
imgwidth:图片宽度
imgheight:图片高度
condition:筛选条件,可使用SQL字段筛选
field:调用字段,默认为*
调用示例:
{cms:tagslist id="tag" orderby="rand" limit="30"}
//标签名称
{$tags.name}
//文档链接
{$tags.url}
//文档数
{$tags.archives}
{/cms:tagslist}
默认模版中的应用代码:
{cms:tagslist id="tag" orderby="rand" limit="30"}
<a href="{$tag.url}" class="tag"> <span>{$tag.name}</span></a>
{/cms:tagslist}
2.6 Tag标签详情页
tags
标签介绍:用于显示标签字段信息
适用范围:标签页
调用示例:
//标签名称
{cms:tags name="name" /}
//标签文档数
{cms:tags name="archives" /}
2.7 区块列表标签
blocklist
标签介绍:用于调用CMS内的区块列表,常用于幻灯片调用
适用范围:全部
标签参数:
id:循环变量名
key:循环索引名
row:行数
limit:行数
empty:为空时显示的信息
mod:取模基数,常用于控制多少条数据后换行、变色等
cache:缓存时间,为0则不缓存,为true则永久缓存
orderby:排序字段,支持id,name,createtime,updatetime,rand(随机)
orderway:排序方式,asc=正序,desc=倒序
imgwidth:图片宽度
imgheight:图片高度
condition:筛选条件,可使用SQL字段筛选
name:指定区块的名称
调用示例:
//调用name为focus的5条区块数据列表 {cms:blocklist id="block" name="focus" row="5"} //可以在标签内启用block表的所有字段数据 {$block.title} {$block.id} {$block.content}
{/cms:blocklist}
注:动态获取diyname
name="$__CHANNEL__->diyname"
2.8 区块详情标签
block
标签介绍:用于调用显示区块信息,自动判断区块内容来显示图片或文本链接
适用范围:全部
调用示例:
//通过区块ID来调用显示区块 {cms:block id="1" /} //通过名称Name来调用显示区块
{cms:block name="bannerad" /}
{cms:block id="55" field="image"/}
2.9 评论标签
commentlist
标签介绍:用于调用文档或单页的评论列表
适用范围:详情页、单页详情页
标签参数:
id:循环变量名
key:循环索引名
row:行数
limit:行数
empty:为空时显示的信息
mod:取模基数,常用于控制多少条数据后换行、变色等
cache:缓存时间,为0则不缓存,为true则永久缓存
orderby:排序字段,支持id,name,createtime,updatetime,rand(随机)
orderway:排序方式,asc=正序,desc=倒序
imgwidth:图片宽度
imgheight:图片高度
condition:筛选条件,可使用SQL字段筛选
type:类型,支持page=单页,archives=文档
aid:单页或文档ID
pid:父评论ID
fragment:锚点元素ID
调用示例:
{cms:commentlist id="comment" type="[type]" aid="$aid" pagesize="10"}
//这里面可以调用cms_comment表的所有字段数据
{$comment.id}
{$comment.createtime|human_date}
{$comment.content}
//还可以调用user表的数据
{$comment.user.id}
{$comment.user.avatar}
{$comment.user.nickname}
{/cms:commentlist}
2.10 评论信息标签
commentinfo
标签介绍:用于在文档页显示评论分页信息
适用范围:文档详情页
标签参数:
type:保留参数
调用示例:
{cms:commentinfo type="full" /}
3. 列表页专属标签
3.1 列表标签
pagelist
标签介绍:用于在列表页显示当前的类别下分页后的文档列表信息,此标签和arclist的标签区别在于此标签是指定当前栏目下的文档数据,是计算过分页的
适用范围:列表页
标签参数:
id:循环变量名
key:循环索引名
empty:为空时显示的信息
mod:取模基数,常用于控制多少条数据后换行、变色等
调用示例:
{cms:pagelist id="item"}
//这里面可以调用cms_archives表的所有字段数据,如果启用了addon属性还可以调用副表数据
{$item.title}
{$item.image}
{$item.keywords}
//是否有预览图
{$item.hasimage}
//文档组合链接
{$item.textlink}
//文档链接
{$item.url}
//栏目组合链接
{$item.channellink}
//图片组合链接
{$item.imglink}
//图片HTML
{$item.img}
{/cms:pagelist}
3.2 列表筛选标签
pagefilter
标签介绍:用于在列表页显示筛选信息的列表
适用范围:列表页
标签参数:
id:循环变量名
key:循环索引名
empty:为空时显示的信息
mod:取模基数,常用于控制多少条数据后换行、变色等
调用示例:
{cms:pagefilter id="filter" exclude=""}
//组标题
{$filter.title}
//通常筛选标签需要配置volist来显示过滤的详细选项
{volist name="$filter.content" id="item"}
//当前选项是否选中
{$item.active}
//筛选项URL
{$item.url}
//筛选项名称
{$item.title}
{/volist}
{/cms:pagefilter}
3.3 列表排序标签
pageorder
标签介绍:用于在列表页显示排序信息的列表
适用范围:列表页
标签参数:
id:循环变量名
key:循环索引名
empty:为空时显示的信息
mod:取模基数,常用于控制多少条数据后换行、变色等
调用示例:
{cms:pageorder id="order"}
//是否当前选中项
{$order.active?'active':''}
//排序链接
{$order.url}
//排序名称
{$order.title}
{/cms:pageorder}
3.4 列表分页标签
pageinfo
标签介绍:用于在列表页显示分页信息
适用范围:列表页
标签参数:
type:保留参数
调用示例:
{cms:pageinfo type="full" /}
4. 其他标签
4.1 配置标签
config
标签介绍:用于调用框架的配置信息
适用范围:全部
调用示例:
//调用站点名称
{cms:config name="site.name" /}
//调用备案信息
{cms:config name="site.beian" /}
//调用当前调试状态
{cms:config name="app_debug" /}
4.2 面包屑标签
breadcrumb
标签介绍:用于调用当前文档或栏目的面板屑
适用范围:全部
标签参数:
id:循环变量名
key:循环索引名
empty:为空时显示的信息
mod:取模基数,常用于控制多少条数据后换行、变色等
调用示例:
{cms:breadcrumb id="item"}
//最后一个不调用>
{if isset($__LIST__[$key+1])} >{else /}{/if}
//链接文字 {$item.name} //链接地址 {$item.url} {/cms:breadcrumb}
4.3 导航栏标签
nav
标签介绍:用于调用导航栏信息
适用范围:全部
标签参数:
maxlevel:最大调用的层级
condition:筛选条件,可使用SQL字段筛选
cache:缓存时长,为0则不缓存
调用示例:
//控制最大层级为3层的导航栏列表,且不缓存
{cms:nav maxlevel="3" cache="0" /}
//调用模型为1的第一层栏目列表
{cms:nav maxlevel="1" condition="model_id=1" /}
4.4 上下页标签
prevnext
标签介绍:用于调用当前文档的上下篇文章
适用范围:文档详情页
标签参数:
id:循环变量名
type:类型,prev=上一篇,next=下一篇
archives:文档的ID
channel:栏目的ID
调用示例:
//调用上一篇文章
{cms:prevnext id="prev" type="prev" archives="__ARCHIVES__.id" channel="__CHANNEL__.id"}
//文章URL
{$next.url}
//文章标题
{$next.title}
{/cms:prevnext}
//调用下一篇文章
{cms:prevnext id="next" type="next" archives="__ARCHIVES__.id" channel="__CHANNEL__.id"}
//文章URL
{$next.url}
//文章标题
{$next.title}
{/cms:prevnext}
5 常用标签实例速查【持续更新,欢迎留言】
栏目导航
<!--如果你需要自定义NAV,可使用channellist标签来完成,这里只设置了2级,如果显示无限级,请使用cms:nav标签-->
{cms:channellist id="nav" type="top" condition="1=isnav"}
<!--判断是否有子级或高亮当前栏目-->
<li class="{if $nav.has_child}dropdown{/if} {if $nav->is_active} active{/if}">
<a href="{$nav.url}" {if $nav.has_child} data-toggle="dropdown" {/if}>{$nav.name}{if $nav.has_child} <b class="caret"></b>{/if}</a>
<ul class="dropdown-menu" role="menu">
{cms:channellist id="sub" type="son" typeid="$nav['id']" condition="1=isnav"}
<li><a href="{$sub.url}">{$sub.name}</a></li>
{/cms:channellist}
</ul>
</li>
{/cms:channellist}
栏目及内容列表
{cms:channellist id="channel" type="son" typeid="$__CHANNEL__.id"}
<div class="col-xs-12 col-sm-6">
<h3>{$channel.textlink} <em><a href="{$channel.url}">{:__('More')}</a></em></h3>
{cms:arclist id="row" channel="$channel.id" limit="0,1"}
<div class="media">
<div class="media-left">
<a href="{$row.url}" {if $row.style}style="{$row.style_text}"{/if}>
<div class="embed-responsive embed-responsive-4by3 img-zoom">
<img class="embed-responsive-item media-object" width="64" height="64" src="{$row.image}">
</div>
</a>
</div>
<div class="media-body">
<h4 class="media-heading">{$row.textlink}</h4>
<p>{$row.description}</p>
</div>
</div>
{/cms:arclist}
<ul class="list-unstyled inner-list">
{cms:arclist id="row" channel="$channel.id" limit="1,5"}
<li>
<a href="{$row.url}" {if $row.style}style="{$row.style_text}"{/if}>{$row.title}</a>
<span class="pull-right">{$row.publishtime|date='m-d',###}</span>
</li>
{/cms:arclist}
</ul>
</div>
{/cms:channellist}
{:addon_url('cms/channel/index', [':id'=>42, ':diyname'=>'Professionals'])}
解析html标签:|html_entity_decode
condition="`n`.`wzkmfl`=$a and `n`.`arctype` LIKE '%真题解析%'"
{$row.image|htmlentities}函数把字符转换为 HTML 实体
{$row.createtime|datetime}
{$arrList|count}
{$typeList|json_encode}
{$row.setting.primarykey|default=''}
{$totalOrderAmount|sprintf='%.2f',###}
{$row.description|mb_substr=0,40}
{$comment.user.avatar|cdnurl}
{$comment.createtime|human_date}
{$__ARCHIVES__.publishtime|date='Y-m-d',###}
{$q|htmlspecialchars} 把预定义的字符转换为 HTML 实体
|strip_tags 过滤html标签
{$name|md5|strtoupper|substr=0,3}
toolbar: false, // 此处往下6个参数是关闭子表的相关按钮,不加的话会导致上面的表头按钮错乱,并且会报错 showColumns: false,
showToggle: false,
showExport: false,
search: false,
commonSearch: false,
sortOrder: 'ASC',
escape: false, 会转成空格
获取系统配置中的参数:
use think\Config;
$site = Config::get("site");
发表评论 取消回复