Discuz模板引擎标签

界面风格与模板定制的详细说明

Discuz! 的模板采用文件保存,默认模板保存在 ./templates/default/ 目录中,该目录下 *.htm 文件是模板文件,*.lang.php 是语言包 文件,默认模板的目录不能被修改,而且不能被删除,否则将导致严重的问题。

默认模板必须包含全部的模板文件和语言包,但自定义模板则只需包含与默认模板有差别的文件即可,未被包含的文件(模板或语言包), 系统会自动读取默认模板中的内容。例如自定义界面只修改了 header.htm 模板,在这个模板目录中只包含 header.htm 即可了。

自定义模板中的语言包只对该目录内包含的模板(htm)有效,不会影响到未被包含的模板和默认模板的语言信息。

如果需要导出论坛界面,系统会自动判断该方案使用的模板是默认模板或是自定义模板。如果使用的是自定义模板,导出的内容中将会包含 所用到自定义模板的全部内容。因此,除了导出的文件以外,则只需打包含界面所使用的图片目录即可发布您的界面方案了。导出文件名 discuz_style_x。txt,该文件可用记事本打开,为了避免内部错误和提高粘贴的速度,文件采用每行 50 字的 base64 编码,以 Discuz! 2.0 为例,格式如下:

	# Discuz! Style Dump

# Version: Discuz! 2.0

# Time: 2002-12-21 10:25 AM

# From: Discuz! Board (http://discuz.net/)

#

# This file was BASE64 encoded

#

# Discuz! Community: http://www.Discuz.net

# Please visit our website for newest infomation about Discuz!

# --------------------------------------------------------





YTo5OntzOjQ6Im5hbWUiO3M6NDoieG1hcyI7czoxMDoidGVtcG

xhdGVpZCI7czoxOiI0IjtzOjc6InRwbG5hbWUiO3M6NDoieG1h

cyI7czo3OiJjaGFyc2V0IjtzOjY6ImdiMjMxMiI7czo5OiJkaX

JlY3RvcnkiO3M6MTY6Ii4vdGVtcGxhdGVzL3htYXMiO3M6OToi



...

...

!! 强烈建议您不要修改默认模板的任何内容 !!

如果需新增自己的模板套系,建议将其放在 ./templates/模板的英文名称/ 目录中,这将给维护和升级带来巨大的方便。

Discuz! 自 2.0.0 以来,率先将编译模板技术在商业产品中实现,使得模板技术的应用有了本质的飞跃,不仅解决了困扰已久的速度瓶颈 问题,而且模板中包含丰富易用的逻辑功能,又完美的实现了模板的可扩展性,使得一个模板足以容纳一个页面的全部信息,而不必再像以往 那样必须用十几个小模板才能完成一个具有逻辑功能的页面。将为界面的扩充带来极大方便--只需修改模板就可实现一些基本的页面功能而不 必改动程序。

Discuz! 的模板采用近似 PHP 表达式的语法,支持的元素如下:

  • <!--{ ... }-->
    逻辑元素包围符,该符号用于包含条件和循环元素

    • 条件判断

      	<!--{if expr1}-->

      statement1

      <!--{elseif expr2}-->

      statement2

      <!--{else}-->

      statement3

      <!--{/if}-->

      这是一个典型的条件模板,当条件 expr1 为真时,显示模板 statement1 内容,否则当 expr2 为真时,显示模板 statement2 内容,否则 显示模板 statement3 的内容。如同其他语言中的条件控制一样,其中 <!--{elseif expr}--> 和 <!--{else} --> 是非必须的。

    • 不带下标变量的数组循环

      	<!--{loop $array $value}-->

      statement

      <!--{/loop}-->

      相当于 PHP 的数组循环语句:

      	foreach($array as $value) {

      statement

      }

    • 带下标变量的数组循环

      	<!--{loop $array $key $value}-->

      statement

      <!--{/loop}-->

      相当于 PHP 的数组循环语句:

      	foreach($array as $key => $value) {

      statement

      }

      逻辑元素包围符在 { } 外面包含了 html 的注释符号 <!-- -->,除了为了和信息元素相区别外,也方便了使用 Dreamweaver 和 Frontpage 之类工具编辑模板的用户。因逻辑元素会被识别为 html 的注释而不被显示,对于绝大多数用户,逻辑元素中的内容是完全不需要 修改的,甚至修改错一个字符就可能引起错误信息和整个系统无法运行。因此通常您在修改模板的时候,不要修改模板的逻辑信息,更不要将 逻辑信息内部元素(如 <!--{else}--> 等)的前后位置作以修改,否则可能会导致错误。如果您的模板被不慎修改损坏,请立即用原 标准默认模板覆盖,即可恢复。

      对于高手而言,实际上外部的 <!-- --> 是可以省略不写的,可以用于某些元素在模板中的定位,但强烈建议普通用户不要轻易尝试。

  • { ... }
    信息元素包围符


    • {CONSTANT}
      可以引用界面替换变量,其中必须为大写字母,该符号实际的作用是引用 PHP 常量 CONSTANT,因此也可以通过它来引用其他的常量内容。
    • {lang variable}
      可以在模板中引用语言变量 variable 的内容,语言变量经由 templates.php.lang 中数组 $language 定义。如 {lang post_edit} 的 内容在编译模板的时候被替换为 $language['post_edit'] 的内容,简体中文版的意思是“编辑帖子”。
    • {template name}
      模板嵌入符,为了避免模板的冗长,可以使用本符号来将 name 模板的内容嵌入本模板中(实际上为引用)。
    • {eval statement}
      运行 PHP 语句体 statement。推荐只在特别必须的时候才使用该结构,因为它会破坏模板的结构和可读性。如 {eval echo 'template!';} 实现的功能为 echo 'template';
    • {LF}
      换行符,因为 Discuz! 模板引擎会忽略掉多余的换行(/n),这个符号用来成生需要的 /n。

我们所推荐的模板修改方法:通过普通编辑器手工书写 html 或通过 Dreamweaver 或 Frontpage 修改。但是修改需切记,同一逻辑元素内 或嵌套中元素的位置和内容切勿修改,即通常情况下,您不能把 <!--{}--> 包围的内容单独的移动,更不能删除。但是整个最外部逻辑 结构是可以移动或删除的。

如果修改后模板所在页面在输出类似如下的错误信息 Parse error: parse error, unexpected '}' in /home/username/forums/forumdata/templates/1_login.tpl.php on line 6,说明模板中出现 了无法匹配,或格式错误的逻辑元素,请仔细检查是否有元素不对应,没有结束或嵌套损坏,格式错误的现象,必要时可以恢复原始模板来解决 问题。

Discuz! 提供了方便的界面打包程序,前面已对其格式做了介绍,将导出信息的内容粘贴到 系统设置 中 风格方案 中的 导入界面方案 中, 执行即可。程序会自动解析数据内容,恢复相关的界面设置,自定义替换变量和所需的模板设置。如果被导出界面使用了非默认模板,必须将 ./templates 目录属性设置为 777,以便导入程序自动建立模板记录和文件夹。

 

注:来源Discuz用户来源帮助文件

 

<!--{eval echo  date("Y-m-d",$temp['ntime'])}-->

 

discuz模板输出日期

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值