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文件,我们可以看到标签库有定义可调用的标签和属性,以下是自带的标签

fskhT/61ccegadl7PBtJlg==
    '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: CMS插件必须的前缀
  • 数据名 - 标签库中定义的数据名
  • 变量名 - id="标签名" 循环中所要使用的变量名
  • 属性值 - 为标签调用的参数,可以多个使用,请用空格分开多个属性,值如果为字符串时请添加双引号
    示例:(仅演示标签使用格式,具体标签的使用,请查看对应章节)
<!-- 这是栏目循环的调用 -->
{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/}
内容
{/比较标签}

系统支持的比较标签以及所表示的含义分别是:

YZT4JhBzG1K0fjOhr/jysg==
标签含义
eq或者 equal等于
neq 或者notequal不等于
gt大于
egt大于等于
lt小于
elt小于等于
heq恒等于
nheq不恒等于

他们的用法基本是一致的,区别在于判断的条件不同。

dIeXlKtIYKgp4dhFdYejNA==

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完全开发手册中模版部分。

/zU4M+MD1XROn/728rnC4A==

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:

561gph+/J92H0muaez1FYA==
$id =    1;
$this->assign('id',$id);

我们可以使用in标签来判断模板变量是否在某个范围内,例如:

A0O5Sq457ockwqfaCCwDYg==
{in name="id" value="1,2,3"}
id在范围内
{/in}

BETWEEN 和 NOTBETWEEN

可以使用between标签来判断变量是否在某个区间范围内,可以使用:

KO5E+HdP4LJ8Hw682aRDdA==
{between name="id" value="1,10"}
输出内容1
{/between}

同样,也可以使用notbetween标签来判断变量不在某个范围内:

{notbetween name="id" value="1,10"}
输出内容2
{/notbetween}

也可以使用else标签把两个用法合并,例如:

vmGL+6Xu7UNwPP1rdGcg7w==
{between name="id" value="1,10"}
输出内容1
{else/}
输出内容2
{/between}

RANGE

也可以直接使用range标签,替换前面的判断用法:

2el0sHQXm67A0MyBJHGsyg==
{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 数据函数处理

我们往往需要对模板输出变量使用函数,可以使用:

JO/EQ8ecpkmdMov4KKj67A==
{$data.name|md5} 

编译后的结果是:

41Ko/ox6Y71t/LEU62mLnA==
<?php echo (md5($data['name'])); ?>

如果函数有多个参数需要调用,则使用:

gfzB+4zX6olCYfKyPq0Vtg==
{$create_time|date="y-m-d",###}

表示date函数传入两个参数,每个参数用逗号分割,这里第一个参数是y-m-d,第二个参数是前面要输出的create_time变量,因为该变量是第二个参数,因此需要用###标识变量位置,编译后的结果是:

pjJWZasqaps1MuWa9OobzA==
<?php echo (date("y-m-d",$create_time)); ?>

如果前面输出的变量在后面定义的函数的第一个参数,则可以直接使用:

5lZMVUKNpO+nqekcMhq+mQ==
{$data.name|substr=0,3}

表示输出

<?php echo (substr($data['name'],0,3)); ?>

虽然也可以使用:

{$data.name|substr=###,0,3}

但完全没用这个必要。


还可以支持多个函数过滤,多个函数之间用“|”分割即可,例如:

{$name|md5|strtoupper|substr=0,3}

编译后的结果是:

e4gtq1yGPf0hMPVYR+eHSg==
<?php echo (substr(strtoupper(md5($name)),0,3)); ?>

函数会按照从左到右的顺序依次调用。

bB2tfp/EqpLnqV+KONleOA==

如果你觉得这样写起来比较麻烦,也可以直接这样写:

Lr7Pb0fadrYI1z7ov4LHRQ==
{:substr(strtoupper(md5($name)),0,3)}
变量输出使用的函数可以支持内置的PHP函数或者用户自定义函数,甚至是静态方法。

1.8 模版引入

传统方式的导入外部JSCSS文件的方法是直接在模板文件使用:
<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" /}

系统还提供了两个标签别名jscss 用法和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:标志

调用示例:

 {cms:arclist id="item" channel="28" model="5" addon="*" orderby="publishtime" row="8" condition="`n`.`arctype2` LIKE '%报名时间%'"}  模糊查询

嵌套sql标签

{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

标签介绍:用于在列表页显示排序信息的列表
适用范围:列表页
标签参数:

QuD3BCJYHr1ZzJOp6IYUlw==
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

标签介绍:用于调用导航栏信息
适用范围:全部
标签参数:

Z0fPRYtjByuE/2V8GYroXA==
maxlevel:最大调用的层级
condition:筛选条件,可使用SQL字段筛选
cache:缓存时长,为0则不缓存

调用示例:

Krgh69UnGNDzNeFGS26/qw==
//控制最大层级为3层的导航栏列表,且不缓存
{cms:nav maxlevel="3" cache="0" /}
//调用模型为1的第一层栏目列表
{cms:nav maxlevel="1" condition="model_id=1" /}

4.4 上下页标签

prevnext

标签介绍:用于调用当前文档的上下篇文章
适用范围:文档详情页
标签参数:

lRL0HCdEGXIhVjgf/pf/Ng==
id:循环变量名
type:类型,prev=上一篇,next=下一篇
archives:文档的ID
channel:栏目的ID

调用示例:

EQ6WiooMYa9bBXrXaCmxQw==
//调用上一篇文章
{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,&nbsp;会转成空格


获取系统配置中的参数:

use think\Config;

$site = Config::get("site");

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
返回
顶部