模板标签介绍

系统变量输出

使用 {$Think.变量类型.变量名}格式输出标签。

{$Think.server.script_name} // 输出$_SERVER['SCRIPT_NAME']变量
{$Think.session.user_id} // 输出$_SESSION['user_id']变量
{$Think.get.pageNumber} // 输出$_GET['pageNumber']变量
{$Think.cookie.name}  // 输出$_COOKIE['name']变量

支持输出$_SERVER$_ENV$_POST$_GET$_REQUEST$_SESSION$_COOKIE变量 。

默认值输出

我们可以给变量输出提供默认值,例如

{$user.nickname|default="这家伙很懒,什么也没留下"}

模板继承

模板继承是一项更加灵活的模板布局方式,模板继承不同于模板布局,甚至来说,应该在模板布局的上层。模板继承其实并不难理解,就好比类的继承一样,模板也可以定义一个基础模板(或者是布局),并且其中定义相关的区块(block),然后继承(extend)该基础模板的子模板中就可以对基础模板中定义的区块进行重载。 因此,模板继承的优势其实是设计基础模板中的区块(block)和子模板中替换这些区块。 每个区块由<block></block>标签组成。 下面就是基础模板中的一个典型的区块设计(用于设计网站标题):

<block name="title"><title>网站标题</title></block>

block标签必须指定name属性来标识当前区块的名称,这个标识在当前模板中应该是唯一的,block标签中可以包含任何模板内容,包括其他标签和变量,例如:

<block name="title"><title>{$webtitle}</title></block>

你甚至还可以在区块中加载外部文件:

<block name="include"><include file="header.html" /></block>

一个模板中可以定义任意多个名称标识不重复的区块,例如下面定义了一个base.html基础模板:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<block name="title"><title>标题</title></block>
</head>
<body>
<block name="menu">菜单
<block name="left">左边分栏
<block name="main">主内容
<block name="right">右边分栏
<block name="footer">底部
</body>
</html>

然后我们在子模板(其实是当前操作的入口模板)中使用继承:

<extend name="base" />
<block name="title"><title>{$title}</title></block>
<block name="menu">
<nav name="nav">
<a href="{$nav["url"]}" >{$nav["title"]}</a>
</nav>
</block>
<block name="left"></block>
<block name="content">
<list name="list">
<a href="{$list.url}">{$list.title}</a><br/>
 {$vo.content}
</volist>
</block>
<block name="right">
 最新影片:
<list name="list" order="hits desc" limit="10">
<a href="{$list.url}">{$list.title}</a><br/>
</volist>
</block>
<block name="footer">
 @LFCMS2015 版权所有
</block>

可以看到,子模板中使用了extend标签定义需要继承的模板,extend标签的用法和include标签一样,你也可以加载其他模板:

<extend name="base" />

或者使用绝对文件路径加载

<extend name="./Template/Public/base.html" />

在当前子模板中,只能定义区块而不能定义其他的模板内容,否则将会直接忽略,并且只能定义基础模板中已经定义的区块。 例如,如果采用下面的定义:

<block name="title"><title>{$title}</title></block>
<a href="/" >首页</a>
<a href="/info/" >资讯</a>
<a href="/bbs/" >论坛</a>

导航部分将是无效的,不会显示在模板中。 在子模板中,可以对基础模板中的区块进行重载定义,如果没有重新定义的话,则表示沿用基础模板中的区块定义,如果定义了一个空的区块,则表示删除基础模板中的该区块内容。 上面的例子,我们就把left区块的内容删除了,其他的区块都进行了重载。 子模板中的区块定义顺序是随意的,模板继承的用法关键在于基础模板如何布局和设计规划了,如果结合原来的布局功能,则会更加灵活。

包含文件

在当前模版文件中包含其他的模版文件使用include标签,标签用法:

<include file='模版表达式或者模版文件1,模版表达式或者模版文件2,...' />

在当前模版包含文件中使用变量{$tplpath}用法:

<include file='{$tplpath}/header.html' />

系统还提供了两个标签别名js和css 用法和include一致,例如:

<js href="/Public/Js/Common.js" />
<css href="/Public/Css/common.css" />

三元运算

模板可以支持三元运算符,例如:

{$status?'正常':'错误'}
{$info['status']?$info['msg']:$info['error']}

Volist标签

volist标签通常用于二维数组循环输出。

<volist name="list" id="data">
{$data.id}:{$data.name}<br/>
</volist>

Volist标签的name属性表示模板赋值的变量名称,因此不可随意在模板文件中改变。id表示当前的循环变量,可以随意指定,但确保不要和name属性冲突。

For标签

用法:

<for start="开始值" end="结束值" comparison="" step="步进值" name="循环变量名" >
</for>

开始值、结束值、步进值和循环变量都可以支持变量,开始值和结束值是必须,其他是可选。comparison 的默认值是lt;;name的默认值是i,步进值的默认值是1,举例如下:

<for start="1" end="100">
{$i}
</for>

Switch标签

<switch name="User.level">
<case value="1">value1</case>
<case value="2">value2</case>
<default />default
</switch>
<switch name="变量" >
<case value="值1">输出内容1</case>
<case value="值2">输出内容2</case>
<default />默认情况
</switch>

比较标签

比较标签用于简单的变量比较,复杂的判断条件可以用if标签替换,比较标签是一组标签的集合,基本上用法都一致,如下:

<比较标签 name="变量" value="值">
内容
</比较标签>

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

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

他们的用法基本是一致的,区别在于判断的条件不同,并且所有的比较标签都可以和else标签一起使用。

<eq name="name" value="value">
相等
<else/>
不相等
</eq>

IF标签

用法示例:

<if condition="($name eq 1) OR ($name gt 100) "> value1
<elseif condition="$name eq 2"/>value2
<else /> value3
</if>

在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法。

Empty标签

empty标签用于判断某个变量是否为空,用法:

<empty name="name">
name为空值
</empty>

如果判断没有赋值,可以使用:

<notempty  name="name">
name不为空值
</notempty >

使用PHP代码

Php代码可以和标签在模板文件中混合使用,可以在模板文件里面书写任意的PHP语句代码 ,包括下面两种方式:

第一种方法
<php>echo 'Hello,world!';</php>
第二种方法
<?php echo 'Hello,world!'; ?>

内置标签

nav标签

适用范围:全页面

nav标签用于输出导航内容。

前台显示:

后台设置:

<li><a href="{$webpath}" title="首页">首页</a></li>
<nav name="nav">
    <li><a href="{$nav['url']}" title="{$nav['title']}">{$nav['title']}</a></li>
</nav>
标签变量 含义
name 循环变量
cid 要查询内容上级分类id 可以使用变量例如:cid="$nav['id']"
type 模型类型 1:视频类型 2:新闻类型 3:外链类型
limit 输出数量 例如 limit="10" limit="3,10"

可在标签中输出的变量

变量 含义
i 循环累加数值
id 分类ID
name 分类标志
title 分类标题
pid 上级分类ID
url 分类地址
branch 是否有下级分类 返回0或1

镶套循环输出。

电影
  动作
  喜剧
  恐怖
  科幻
电视剧
  国产
  港台
  日韩
  欧美
综艺
动漫
记录
<nav name="nav">{$nav['title']}</br>
<nav name="menu" cid="$nav['id']"> {$menu['title']}</br></nav>
</nav>

type标签

适用范围:分类页面

用于制作分类检索标签。

<type name="type">可在标签中输出的变量</type>

可在标签中输出的变量

变量 含义
i 循环累加数值
id 分类ID
title 分类标题
url 分类地址

area标签

适用范围:分类页面

用于制作地区检索标签。

<area name="area">可在标签中输出的变量</area>

可在标签中输出的变量

变量 含义
i 循环累加数值
title 地区标题
url 地区地址

language标签

适用范围:分类页面

用于制作语言检索标签。

<language name="language">可在标签中输出的变量</language>

可在标签中输出的变量

变量 含义
i 循环累加数值
title 语言标题
url 语言地址

year标签

适用范围:分类页面

用于制作年份检索标签。

<year name="year">可在标签中输出的变量</type>

可在标签中输出的变量

变量 含义
i 循环累加数值
title 年份标题
url 年份地址

list标签

适用范围:全页面

用于制作影视内容输出标签。

<list name="变量名" cid="分类id" order="排序内容">可在标签中输出的变量</list>
标签变量 含义
name 循环变量
cid 要查询内容分类id 可以使用变量例如:cid="$nav['id']" 可以多分类例如:cid="1,2,3" 输入大类ID自动显示下属分类内容 为all显示全部分类内容 为空显示当前分类内容
order 排序例如 order="hits desc"按点击排序 order="id desc"按添加顺序排序 order="update_time desc"按更新时间排序
pos 是否推荐内容 pos="1"为推荐内容 系统会根据标签放置的页面推荐相应后台设置的内容
limit 输出数量 例如 limit="10" limit="3,10"

可在标签中输出的变量

变量 含义
i 循环累加数值
cid 分类ID
ctitle 分类名称
curl 分类链接地址(分类url)
id 影片ID
title 影片名称
actors 影片演员 可以使用函数截取字符例如:{$list['actors']|msubstr=0,10}
actors_array 影片演员数组 可用volist标签再次输出<volist name="list['actors_array']" id="actors"> <a href="{$actors['url']}" title="{$actors['actors']}">{$actors['actors']}</a> </volist>
area 影片地区
language 影片语言
year 影片年份
pinyin 拼音首字母大写
pic 影片图片
content 影片介绍
also_known_as 影片别名
hits 影片浏览数量
rating 影片评分
rating_count 影片评分人数
directors 影片导演
serialize 影片连载内容
digg digg数组 $digg['up']顶数量 $digg['down']踩数量 $digg['up_js']编译后内容是onclick=digg('up')用于提交顶内容 $digg['down_js']提交踩内容
time 影片更新时间
create_time 影片创建时间 可使用time_format函数格式化后输出 {$list.create_time|time_format=###,"Y-m-d"}
url 影片内容页地址

news标签

适用范围:全页面

用于制作新闻列表输出标签。

<news name="变量名" limit="显示数量" order="排序内容">可在标签中输出的变量</news>
标签变量 含义
name 循环变量
cid 要查询内容分类id 可以使用变量例如:cid="$nav['id']" 可以多分类例如:cid="1,2,3" 输入大类ID自动显示下属分类内容 为all显示全部分类内容 为空显示当前分类内容
order 排序例如 order="hits desc"按点击排序 order="id desc"按添加顺序排序 order="update_time desc"按更新时间排序
limit 分页输出数量 例如 limit="10"

可在标签中输出的变量

变量 含义
i 循环累加数值
cid 分类ID
ctitle 分类名称
curl 分类链接地址(分类url)
id 新闻ID
title 新闻名称
pic 新闻图片
content 新闻内容
hits 新闻浏览数量
digg digg数组 $digg['up']顶数量 $digg['down']踩数量 $digg['up_js']编译后内容是onclick=digg('up')用于提交顶内容 $digg['down_js']提交踩内容
time 新闻更新时间
create_time 新闻创建时间 可使用time_format函数格式化后输出 {$list.create_time|time_format=###,"Y-m-d"}
url 新闻内容页地址

listpage标签

适用范围:分类页面

用于制作影视分页内容输出标签。

<listpage name="变量名" limit="分页数量" order="排序内容">可在标签中输出的变量</listpage>

listpage标签要配合page标签使用<page listrow="分页数量" />

标签变量 含义
name 循环变量
cid 要查询内容分类id 可以使用变量例如:cid="$nav['id']" 可以多分类例如:cid="1,2,3" 输入大类ID自动显示下属分类内容 为all显示全部分类内容 为空显示当前分类内容
order 排序例如 order="hits desc"按点击排序 order="id desc"按添加顺序排序 order="update_time desc"按更新时间排序
limit 分页输出数量 例如 limit="10"

可在标签中输出的变量

变量 含义
i 循环累加数值
cid 分类ID
ctitle 分类名称
curl 分类链接地址(分类url)
id 影片ID
title 影片名称
actors 影片演员 可以使用函数截取字符例如:{$list['actors']|msubstr=0,10}
actors_array 影片演员数组 可用volist标签再次输出<volist name="list['actors_array']" id="actors"> <a href="{$actors['url']}" title="{$actors['actors']}">{$actors['actors']}</a> </volist>
area 影片地区
language 影片语言
year 影片年份
pinyin 拼音首字母大写
pic 影片图片
content 影片介绍
also_known_as 影片别名
hits 影片浏览数量
rating 影片评分
rating_count 影片评分人数
directors 影片导演
serialize 影片连载内容
digg digg数组 $digg['up']顶数量 $digg['down']踩数量 $digg['up_js']编译后内容是onclick=digg('up')用于提交顶内容 $digg['down_js']提交踩内容
time 影片更新时间
create_time 影片创建时间 可使用time_format函数格式化后输出 {$list.create_time|time_format=###,"Y-m-d"}
url 影片内容页地址

search标签

适用范围:影视搜素页面

用于制作影视搜索输出标签。

<search name="变量名" limit="分页数量" order="排序内容">可在标签中输出的变量</search>

search标签要配合page标签使用<page listrow="分页数量" />

标签变量 含义
name 循环变量
order 排序例如 order="hits desc"按点击排序 order="id desc"按添加顺序排序 order="update_time desc"按更新时间排序
limit 分页输出数量 例如 limit="10"

可在标签中输出的变量

变量 含义
i 循环累加数值
cid 分类ID
ctitle 分类名称
curl 分类链接地址(分类url)
id 影片ID
title 影片名称
actors 影片演员 可以使用函数截取字符例如:{$list['actors']|msubstr=0,10}
actors_array 影片演员数组 可用volist标签再次输出<volist name="list['actors_array']" id="actors"> <a href="{$actors['url']}" title="{$actors['actors']}">{$actors['actors']}</a> </volist>
area 影片地区
language 影片语言
year 影片年份
pinyin 拼音首字母大写
pic 影片图片
content 影片介绍
also_known_as 影片别名
hits 影片浏览数量
rating 影片评分
rating_count 影片评分人数
directors 影片导演
serialize 影片连载内容
digg digg数组 $digg['up']顶数量 $digg['down']踩数量 $digg['up_js']编译后内容是onclick=digg('up')用于提交顶内容 $digg['down_js']提交踩内容
time 影片更新时间
create_time 影片创建时间 可使用time_format函数格式化后输出 {$list.create_time|time_format=###,"Y-m-d"}
url 影片内容页地址

newspage标签

适用范围:新闻分类页面

用于制作新闻列表输出标签。

<newspage name="变量名" limit="显示数量" order="排序内容">可在标签中输出的变量</newspage>

newspage标签要配合page标签使用<page listrow="分页数量" />

标签变量 含义
name 循环变量
order 排序例如 order="hits desc"按点击排序 order="id desc"按添加顺序排序 order="update_time desc"按更新时间排序
limit 分页输出数量 例如 limit="10"

可在标签中输出的变量

i 循环累加数值
变量 含义
cid 分类ID
ctitle 分类名称
curl 分类链接地址(分类url)
id 新闻ID
title 新闻名称
pic 新闻图片
content 新闻内容
hits 新闻浏览数量
digg digg数组 $digg['up']顶数量 $digg['down']踩数量 $digg['up_js']编译后内容是onclick=digg('up')用于提交顶内容 $digg['down_js']提交踩内容
time 新闻更新时间
create_time 新闻创建时间 可使用time_format函数格式化后输出 {$list.create_time|time_format=###,"Y-m-d"}
url 新闻内容页地址

page标签

配合listpage search newspage标签使用,显示分页标签

<page listrow="分页数量" />

listrow变量要和标签listpage search的limit变量数量一致

count标签

输出分类数据数量

<count cid="分类ID" />
标签变量 含义
cid 要查询内容分类id 可以使用变量例如:cid="$nav['id']" 可以多分类例如:cid="1,2,3" 输入大类ID自动显示下属分类内容 cid="all"显示全部分类内容 为空显示当前分类内容

全局变量输出

使用 {$变量名}格式输出标签。

变量 含义
webname 网站名称
weburl 网站URL
weblogo 网站LOGO
webpath 网站目录
webtitle 网站SEO标题
keywords 网站SEO关键字
description 网站SEO描述
webicp 网站ICP备案
tplpath 模板目录

分类页变量输出

使用 {$变量名}格式输出标签。

变量 含义
cid 分类id
pid 上级分类id
cname 分类标示
ctitle 分类名称
list_webtitle 分类SEO标题
list_keywords 分类SEO关键字
list_description 分类SEO描述
count 该分类影片数量

搜索页变量输出

使用 {$变量名}格式输出标签。

变量 含义
keyword 搜索关键字

影片详情页和播放页变量输出

使用 {$变量名}格式输出标签。

变量 含义
cid 分类ID
ctitle 分类名称
curl 分类链接地址(分类url)
id 影片ID
title 影片名称
actors 影片演员 可以使用函数截取字符例如:{$actors|msubstr=0,10}
actors_array 影片演员数组 可用volist标签再次输出<volist name="actors_array" id="actors"> <a href="{$actors['url']}" title="{$actors['actors']}">{$actors['actors']}</a> </volist>
area 影片地区
language 影片语言
year 影片年份
pinyin 拼音首字母大写
pic 影片图片
content 影片介绍
also_known_as 影片别名
hits 影片浏览数量
rating 影片评分
rating_count 影片评分人数
directors 影片导演
serialize 影片连载内容
digg digg数组 $digg['up']顶数量 $digg['down']踩数量 $digg['up_js']编译后内容是onclick=digg('up')用于提交顶内容 $digg['down_js']提交踩内容
time 影片更新时间
create_time 影片创建时间 可使用time_format函数格式化后输出 {$list.create_time|time_format=###,"Y-m-d"}
playlist标签

播放地址列表标签playlist 只可在影片详情页和播放页使用

<playlist name="变量名" order="排序">可在标签中输出的变量</playlist>
标签变量 含义
name 循环变量
order order="desc"正序 order="desc"倒序

可在标签中输出的变量

变量 含义
title 播放器名称
movie_url 播放列表地址 数组格式 array{"title"=>"影集名称","url"=>"播放页地址" ,"purl"=>"影片播放地址"} 使用volist循环出来 例如:<volist name="player['movie_url']" id="url"> <a history="{$i}" href="{$url['url']}" target="_blank" rel="nofollow">{$url['title']}</a> </volist>

player标签

播放器标签player 只可在影片播放页使用

<player />

新闻内容页标签

使用 {$变量名}格式输出标签。

变量 含义
i 循环累加数值
cid 分类ID
ctitle 分类名称
id 新闻ID
title 新闻名称
pic 新闻图片
content 新闻内容
hits 新闻浏览数量
digg digg数组 $digg['up']顶数量 $digg['down']踩数量 $digg['up_js']编译后内容是onclick=digg('up')用于提交顶内容 $digg['down_js']提交踩内容
time 新闻更新时间
create_time 新闻创建时间 可使用time_format函数格式化后输出 {$list.create_time|time_format=###,"Y-m-d"}