首页 > 技术文章 > ThinkCMF常用代码

xiaohe520 2019-11-07 09:54 原文

模板常量
__ROOT__:
网站根目录,不带/;

__WEB_ROOT__:
网站资源根目录,不带/,如果以前版本用__ROOT__来定位网站资源,方便以后cdn切换

__TMPL__:
当前模板根目录,不带/;
如:前台 simpleboot3模板根目录是 public/themes/simpleboot3
后台admin_simpleboot3模板根目录是public/themes/admin_simpleboot3

__STATIC__:
public/static目录,不带/;

视频讲解
http://t.cn/RnQBHXZ




系统变量输出
系统变量的输出通常以{$Think开头,如:

{$Think.server.http_host} // 输出$_SERVER['HTTP_HOST']变量
{$Think.session.user_id}  // 输出$_SESSION['user_id']变量
{$Think.post.id} // 输出$_POST['id']变量
{$Think.get.page} // 输出$_GET['page']变量
{$Think.cookie.name}  // 输出$_COOKIE['name']变量
支持输出 $_SERVER$_ENV$_POST$_GET$_REQUEST$_SESSION和 $_COOKIE变量。

常量输出
{$Think.const.APP_PATH}
{$Think.const.CMF_ROOT}
或者直接使用

{$Think.APP_PATH}
{$Think.CMF_ROOT}

配置输出
输出配置参数使用:

{$Think.config.default_module}
{$Think.config.default_controller}
语言变量
输出语言变量可以使用:

{$Think.lang.SAVE}
{$Think.lang.ADD}







可以在模板中直接使用$Request对象,直接输入它的属性或调用它的大部分方法,但只支持方法的第一个参数;

// 调用Request对象的get方法 传入参数为id
{$Request.get.id}
// 调用Request对象的param方法 传入参数为name
{$Request.param.name}
// 调用Request对象的param方法 传入参数为post.post_title
{$Request.param.post.post_title}
// 调用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}





使用函数
为了方便好记,ThinkCMF推荐在模板中使用下面的形式:

<!--单个函数-->
{:date('Y-m-d')}

<!--多个函数-->
{:date('Y年m月d日',strtotime('2017-05-20'))}





使用默认值几个好处:

如果变量未定义可以防止报错
如果变量为空可以提供默认值,减少条件判断,复杂默认值还是要使用条件判断标签来实现
给变量设置默认值输出

{$category.name|default='分类名为空'}
{$user.user_nickname|default='这个家伙没有设置昵称'}
给系统变量设置默认值输出

{$Think.get.name|default="名称为空"}




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

{$status?'发布':'下线'}
{$vo.status?'发布':'下线'}
{$vo['status']?'发布':'下线'}
支持条件判断表达式:

{$a==$b ? 'yes' : 'no'}
条件运算符可以是==、===、!=、!==、>=、<=



原样输出
literal标签可以防止模板标签被解析,所有想原样输出的代码都可以使用这个标签包裹起来,如:

<literal>
    这里是原样输出的内容{$name}
</literal>
如果 js 代码有和模板引擎有冲突的地方也可以使用literal标签包裹起来,防止被解析。








模板注释支持单行注释,多行注释,模板被模板引擎解析不会在页面中输出这些注释,只有开发者可以看到,所以一些不想让用户看到的注释可以使用模板注释。

单行注释
{//单行注释方式一}
{/*单行注释方式二*/}
多行注释
{/*
这里多行注释
这里多行注释
这里多行注释
*/}
注:{和注释标记(//,/*)之间不能有空格。

 

推荐阅读