1.概述

织梦的模板标签类似于XML格式,所有的模板都含有定界符,默认情况下是{dede:*}和{/dede:*},“*”代表模板标记名称。

一般情况下{dede:*}和{/dede:*}是成对出现的。

每个模板都会生成一个模板缓存文件,默认是在站点根目录data/tplcache目录。在模板调试的时候可以查看缓存中编译后的模板文件。

如果需要在开发中使用,则需要引用dedetemplate.class.php文件:

$tpl = new DedeTemplate(
    模板对象实例名称,通常是'tpl',
    [模板存放目录(生成缓存时会存放在这个目录),
   
include语法默认引用目录]
    );
    通常情况下参数二和参数三是不必要的,如:
    $tpl = new
DedeTemplate('tpl');

如果在类文件中调用,应该加上设置:
    $this->tpl->SetObject($this);
   
在一些块调用中默认将使用当前类的成员函数。

$tpl->LoadTemplate(模板的物理路径);

如果模板中带有
{dede:config name='' value=''/}
    可以在载入模板后,通过 $tpl->GetConfig($name)
获得这些变量的值。

显示页面或保存页面为文件
    $tpl->Display();
   
$tpl->SaveTo(物理绝对路径的文件名);

模板中具体标签的使用可以查看本章节相关内容。

2.变量输出

在程序开发中,我们在程序处理中可以给变量赋值,但如何将其显示到模板中呢?这里我们来说明下:

   
1.普通变量

例如我们这里有一个变量

$myvar =
'DedeCMS';
  $this->SetVar('myvar', $myvar);

我们可以在模板中使用:

{dede:var.myvar/}

{dede:var
name='myvar'/}

解析后的代码是<?php
echo $GLOBALS['_vars']['myvar']; ?>,同时我们可以在模板中看到输出效果。

以上是一个普通变量的输出,当然我们可以将数组传递到模板中去

   
2.数组

我们可以通过SetVar()将数组在模板中解析,比如我们现在有一个数组:

$myarr =
array('name'=>'DedeCMS','company'=>'DesDev INC.');

$this->SetVar('myarr', $myarr);

我们可以在模板中使用:

Name:{dede:var.myarr.name/}
Company:{dede:var.myarr.company/}
或者通过:Company:{dede:var name='myarr.company'/}来调用。不过我们推荐使用前者形式并   
且需要整个程序模板标签写法保持统一。

上面的代码解析后是:

Name:<?php echo
$GLOBALS['_vars']['myarr']['name']; ?>
Company:<?php echo
$GLOBALS['_vars']['myarr']['company']; ?>

需要注意的是,一些模板引擎中喜欢使用Assign这种形式来给模板标签变量赋值,DedeCMS也可以使用,用法和SetVar是一样的。

例如:$this->Assign('myvar',
$myvar);

3.函数使用

一般标签有时候是很难完成开发制作需要的,织梦的模板引擎提供了一种处理标签的特殊方法:自定义函数。

通过自定义函数的处理,可以对解析后的标签赋予新的处理,但需要满足函数本身能够返回值。

标签格式为:

{dede:标记名称function='youfunction("参数一","参数二","@me")'/}

其中 @me 用于表示当前标记的值,其它参数由你的函数决定是否存在,例如:
{dede:field.pubdate
function='strftime("%Y-%m-%d %H:%M:%S","@me")'/}

比如说我们这里有一个变量,调用的是时间,我们通常保存在数据库中的时间都是10位的整数,但现实的时候需要将其解析为文本,这时候我们就需要通过特定的函数来处理,这里我们的这个标签是:{dede:field.time/},在模板中输出内容是“1252458332”。

我们来查看一个函数:

//返回格林威治标准时间
function
MyDate($format='Y-m-d H:i:s',$timest=0)
...{
global
$cfg_cli_time;
$addtime = $cfg_cli_time *
3600;
if(empty($format))
...{
$format = 'Y-m-d H:i:s';
}
return
gmdate ($format,$timest+$addtime);
}

这个函数将时间按照格式输出,默认格式是"Y-m-d H:i:s"。

我们将我们的标签进行处理。{dede:field.time function="MyDate('m-d',@me)"/}

我们可以看到输出结果:09-09

4. 系统变量

除了普通的一些变量之外,在系统开发中,模板常常还需要调用一些系统变量以及一些特殊的变量输出,本篇介绍如何在Dede模板中使用标签来调用这些系统变量。

1.配置变量config

配置变量可以在载入模板后通过
$tpl->GetConfig($name) 获得,仅作为配置,不在模板中显示。此变量直接提交到 this->tpCfgs
中,并会生成与模板对应的缓存文件 ***_config.php 文件(可以在tplcache中找到)。

例如我们在模板中设置:{dede:config.pagesize value='20'/},这个是设置分页标签的分页数量为20。

我们将这个配置标签放到模板文件的最顶部,解析后发现模板中的列表显示就是每页显示20条内容。这个是因为在datalist类中对这个配置进行了解析处理。

if(isset($this->tpl->tpCfgs['pagesize']))
...{
$this->pageSize
= $this->tpl->tpCfgs['pagesize'];
}

 2.全局变量global

在系统中经常会调用全局变量,我们可以在模板中使用{dede:global
name='varname'/}来调用,这个变量同时也能够调用系统的一些配置变量。

比如我们调用系统配置中的模板路径,可以使用{dede:global.cfg_templeturl/}来调用。

当然你也可以赋值一些全局变量通过global标签来调用:

$GLOBALS['myglobal'] =
array('name'=>'DedeCMS','company'=>'DesDev INC.');

模板中使用:

{dede:global.myglobal.name/}进行调用。

我们可以通过print_r($GLOBALS);来查看全局变量并使用这个标签进行调用。同时这个变量也支持自定义函数

3.系统配置变量cfg

在上面的内容中就介绍了通过global标签输出系统配置,这里其实有专门的系统配置标签可以输出,我们可以在模板中使用{dede:cfg.name/}来输出相应的配置,这个解析后的内容等同于:<?php
echo $cfg_name; ?>。

考虑到大多数情况下都会在函数或类中调用模板,因此 $_vars、$fields 数组必须声明为 global
数组,否则模板引擎无法获得它的值从而导致产生错误。

4.对象object

在模板中可以使用{dede:object.name->att/}来调用对象的属性。解析后为:<?php echo
$GLOBALS['name']->att; ?>

 5.固定块

这个标签是一个比较特殊的块处理标签,一般需要配合类进行使用。

1.datalist

从绑定类成员函数GetArcList中获取数组并输出
{dede:datalist}
循环代码
{/dede:datalist}
遍历一个二维数组,数据源是固定的,只适用用类调用。
等同于

{tag:blockname bind='GetArcList' bindtype='class'
rstype='array'}
循环代码
{/tag:blockname}

2.label
从绑定函数中获取字符串值并输出
等同于
{tag:blockname bind='func' bindtype='sub' rstype='string'/}

3.pagelist

从绑定类成员函数GetPageList中获取字符串值并输出
等同于 {tag:blockname
bind='GetPageList' bindtype='class' rstype='string'/}

(转)模板引擎类dedetemplate.class.php使用说明的更多相关文章

  1. PHP模板引擎正则替换函数 preg_replace 与 preg_replace_callback 使用总结

    在编写PHP模板引擎工具类时,以前常用的一个正则替换函数为 preg_replace(),加上正则修饰符 /e,就能够执行强大的回调函数,实现模板引擎编译(其实就是字符串替换). 详情介绍参考博文:P ...

  2. Django基础,Day10 - template 模板引擎与路径设置

    作为一个Web框架,Django需要一个方便的方式来生成动态的HTML.最常见的方法依赖于模板.模板包含所需的HTML输出的静态部分以及一些特殊的语法描述如何插入动态内容. Django框架后端默认支 ...

  3. smarty模板引擎原理解析

    //php 控制器文件 <?php//引入模板引擎文件include("20130304.php");$smarty =newTinySmarty();$qq_numbers ...

  4. (转)浅谈dedecms模板引擎工作原理及自定义标签

    理解织梦模板引擎有什么意义?一方面可以更好地自定义标签.更多在于了解织梦系统,理解模板引擎是理解织梦工作原理的第一步.理解织梦会使我们写php代码时更顺手,同时能学习一些php代码的组织方式. 这似乎 ...

  5. 前端学PHP之自定义模板引擎

    前面的话 在大多数的项目组中,开发一个Web程序都会出现这样的流程:计划文档提交之后,前端工程师制作了网站的外观模型,然后把它交给后端工程师,它们使用后端代码实现程序逻辑,同时使用外观模型做成基本架构 ...

  6. 浅谈dedecms模板引擎工作原理及其自定义标签

    浅谈dedecms模板引擎工作原理: 理解织梦模板引擎有什么意思? 可以更好地自定义标签.更多在于了解织梦系统,理解模板引擎是理解织梦工作原理的第一步. 理解织梦会使我们写PHP代码是更顺手,同时能学 ...

  7. PHP的自定义模板引擎

    前面的话 在大多数的项目组中,开发一个Web程序都会出现这样的流程:计划文档提交之后,前端工程师制作了网站的外观模型,然后把它交给后端工程师,它们使用后端代码实现程序逻辑,同时使用外观模型做成基本架构 ...

  8. Flask 框架下 Jinja2 模板引擎高层 API 类——Environment

    Environment 类版本: 本文所描述的 Environment 类对应于 Jinja2-2.7 版本.   Environment 类功能: Environment 是 Jinja2 中的一个 ...

  9. day94:flask:Jinjia2模板引擎&flask中的CSRF攻击&Flask-SQLAlchemy的创建模型类和基本的增删改查

    目录 1.Jinjia2模板引擎 1.Jinjia2加载模板并传递数据到模板中 2.Jinjia2的模板语句 3.模板中特有的变量和函数 4.模板中内置的过滤器 5.自定义过滤器 6.模板继承 2.在 ...

随机推荐

  1. IIS短文件名漏洞修补方法之一改注册表一个注意项

    1)1.png 为漏洞存在没有做任何修复的时候的扫描 修复:2) 修改注册表键值: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSy ...

  2. SVN简明使用方法 .

    SVN简明使用方法 TortoiseSVN 是 Subversion 版本控制系统的一个免费开源客户端,可以超越时间的管理文件和目录.文件保存在中央版本库,除了能记住文件和目录的每次修改以外,版本库非 ...

  3. 趁有空,再了解一下GROOVY中关于类的通例

    简单的,浅浅的看一下. 想起了RUBY里覆盖类的方法... 在GROOVY里也同样提到了,比如TOSTRING... (其实,在我以前的经验中,从未用过这些东东..:)) 这样用了PACKAGE,显得 ...

  4. Unity 使用BMFont制作字体

    参考链接:http://blog.csdn.net/huang9012/article/details/32333913,作者:CSDN huang9012 NGUI版本:3.6.5 要自己制作字体, ...

  5. -_-#【CSS3】CSS3 gradient transition with background-position

    CSS3 gradient transition with background-position <!DOCTYPE html> <html> <head> &l ...

  6. C++排序

    浅谈C++之冒泡排序.希尔排序.快速排序.插入排序.堆排序.基数排序性能对比分析(好戏在后面,有图有真相) 最近一段时间去武汉参加了N多笔试,在几次试题中都出现了排序.偏偏出现了我没怎么看的插入排序, ...

  7. POJ 1456 Supermarket

    题意:商场卖东西,每种商品有两个属性,一种是价格pi,另一种是保质期di,每种商品只能在天数<=di的时候卖出.每天只能卖一种商品,问最多能卖出价格之和为多少的商品.(n <= 10^4, ...

  8. SANSA 上上洛可可 贾伟作品 高山流水 香炉 香插香台香具 高端商务礼品 黑色【正品 价格 图片 折扣 评论】_尚品网ShangPin.com

    SANSA 上上洛可可 贾伟作品 高山流水 香炉 香插香台香具 高端商务礼品 黑色[正品 价格 图片 折扣 评论]_尚品网ShangPin.com

  9. JSP执行过程详解

    复习JSP的概念 JSP是Java Server Page的缩写,在传统的HTML页面中加入JSP标签和java的程序片段就构成了JSP. JSP的基本语法:两种注释类型.三个脚本元素.三个元素指令. ...

  10. Java菜鸟学习笔记--Exception篇(一):异常简介

    什么是异常(Exception)? 简述: 在运行过程中,应用程序可能遭遇各种严重程度不同的问题.异常提供了一种在不弄乱程序的情况下检查错误的巧妙方式.它也提供了一种直接报告错误的机制. 不同类型异常 ...