• discuz模版的学习


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

      <!–{ … }–>

      逻辑元素包围符,该符号用于包含条件和循环元素

    第一次看到<!--内容-->我还以为是注释的效果,后来才知道自己想得太天真了-_-!

      条件判断

       statement1 statement2 statement3

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

      不带下标变量的数组循环

       statement

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

      foreach($array as $value) { statement }

      带下标变量的数组循环

       statement

      相当于 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,以便导入程序自动建立模板记录和文件夹。

      定义变量说明

      

      

      

      123

      

      

      

      

      //如果i除以2的余数等于0

      

      

      · [$value[typename]]

      class=”listA” href=”$value[url]” title=”$value[subjectall]” target=”_blank”>$value[subject]

      

      

      

       ”;}–>

      <!–{eval}}–>

      那在DZ的模板引擎中我们该如何使用Discuz!模板标签呢?

      下面给大家列举DZ模板引擎中常见、常用的模板语句:

      一、直接输出变量: {$abc} 或 {echo $abc}

      二、输出数组中某个变量:{$arr[0]}

      三、IF判断语句:

      

      我abc小于1

      

      我abc为1

      

      我abc大于1

      

      四、Loop循环语句:

      

      这里是 {$val}

      

      上面这段loop语句,DZ会将其转换成php自身的循环语句:

      If(is_array($abc)) {

      Foreach($abc AS $key => $val) {

      }}

      五、在模版文件中使用PHP语句:{eval $abc = 1;} 注意:这里必须带”;”结尾。

      六、在本模板中引用其他的模板: 如我们要包含头部模板文件(header.htm)可以这样写:{subtemplate header}

      在模版中使用语言包中的中文语句:{lang xxxxx} ,在这里xxxxx就是语言包中任意一个数组的键值。

      如:templates/default/templates.lang.php(语言包) 内有下面的数组

      $language = array

      (

      'discuz_lang' => 'templates',

      'click_here' => '点击这里',

      'ban_member' => '禁止',

      'input_invalid' => '填写无效',

      'title_none' => '无标题',

      'title' => '标题',

      }

      大家可以使用{lang title} ,这样在模板输出的时候则会显示”标题”两个字。

      大家掌握了上面这六种DZ模板语句,就可以在自己的二次开发中运用了。

      Discuz!模板文件中不常见的语句和变量说明

      刚接触Discuz!模板文件,您会发现在这些htm文件中包含着很多像:

      ………… {template css} …… $charset {lang memberlist} {MAINTABLECOLOR}

      这样6类在一般htm文件中不常见的语句和变量,这些语句是Discuz!模版中的特有语句,具体说明如下:

      ………… 这类语句并非普通HTML中的注释语句,而是Discuz!特有的模板判断语法,就好比php或者其他语法中的 if,else,then等等。通过这些语法,来控制一些功能的显示控制等效果。

      {template ×××} 这类语句是模板调用语句,比如在某个模板中,想调用另一个模板中的内容,可以通过上面的语句对其他模板文件进行调用,比如在header.htm模板文件中的{template css},将css.htm模板文件调入。index.htm模板文件中最顶有 {template header},最底有 {template footer},分别调入的是header.htm和footer.htm两个模板文件,这样根据页面结构和功能的细分,使Discuz!模板的设计制作更为灵活,方便。

      “……” 这类语句为循环语句,循环执行内部程序,直到数据输出完毕结束。通过这些语句,能够达到把同一系列的资料进行循环显示效果,常见的如论坛列表、帖子列表等。

      $××× 这样以$开头的是Discuz! 参数和变量,一般情况下不建议修改。另外还有一些是Discuz! 固定参数,如: $seohead 后台设置的头部信息 $charset —— config.inc.php中设置语言字符集,必不可少,不能删除! $extrahead —— 控制论坛自动跳转参数,必不可少,不能删除! {eval updatesession();} —— 更新论坛 session 表的参数,必不可少,不能删除! {eval output();} —— 结束论坛输出,必不可少,不能删除!

      以上的参数以Discuz! 4.0为准,这些参数会因应不同版本而有所不同!还有一些 $××× 的也是一些参数如非插件作者或程序开发请勿乱修改!

      {lang ×××} 这类以lang开头的是Discuz!语言包调用语句,后面的变量可以在语言包文件中找到相对应的字段,在模板中所调用的大部分都是 templates.lang.php 文件中的,如下,左侧为模版文件中调用语句,右侧为语言包中对应字段:(用户可以根据自己的需求对语言包进行修改) {lang pm} 'pm' => '短消息' {lang admincp} 'admincp' => '系统设置' {lang memberlist} 'memberlist' => '会员'

      {×××} {IMGDIR}这类括弧内大写的变量是Discuz!风格配色方案中的参数,在前面的css说明中已经作过详细的介绍了,也可根据您的需要通过后台定义新的风格变量

      Discuz! 模板常见语句分析及知识技巧

      Feb 5

      [转] Discuz! 模板常见语句分析及知识技巧 不指定

      2006年2月5日 22:57 posted by LiuYu from 本站原创 大 | 中 | 小

      Creative Commons License本作品按照 署名-非商业性使用-相同方式共享 2.5 中国大陆 进行授权。

      请您在转载本作品时保留原作URL和作者名称,并且不得用于商业用途,在此作品之上的任何演绎都应使用本协议进行许可授权。

      From: http://plugins.discuz.net/viewthread.php?tid=457

      by Tea (阿茶)

      以下原文:

      为什么要写这个文章?

      想让大家都能制作好一个属于自己的风格模板。希望能帮助大家更好的编写和利用Discuz!的风格和模板技巧。是希望有更多的人参与制作 Discuz!风格。是为了提高大家对Discuz!的了解。是为了解除大家心中对Discuz!模板的疑惑。。。。。希望大家加油!

      一、模板调用

      比如在某个模板中,想调用另一个模板中的内容,可以用下面的语句:

      {template xxx}

      假设,建立了一个新模板名字叫 \"abc.htm\" ,在后台模板编辑时只会显示为 \"acb\",需要在 index 中调用它,那么就在index 中适当位置加入 {template abc}

      那么就会自动代用它。

      相关实例:index 模板中,最顶有 {template header},最底有 {template footer}

      相关疑问:那么在这个 abc 模板中需要有 吗?

      不需要的!想要显示什么,就写什么,因为它只是整个网页的一部分! 都已经在header和footer模板中了。

      二、固定参数

      $seohead --- 后台设置的头部信息

      $charset --- config.inc.php中设置语言字符集,必不可少,不能删除!

      $extrahead --- 控制论坛自动跳转参数,必不可少,不能删除!

      {eval updatesession();} --- 更新论坛 session 表的参数,必不可少,不能删除!

      {eval output();} --- 结束论坛输出,必不可少,不能删除!

      以上的参数以Discuz! 4.0为准,这些参数会因应不同版本而有所不同!

      还有一些 $xxx 的也是一些参数如非插件作者或程序开发请勿乱修改!

      三、数据判断

      1、在模板中会经常见到xxxxx的语句。

      这些并非普通HTML中的注释,而是Discuz!特有的模板判断语法,就好比php或者其他语法中的 if,else,then等等。

      通过这些语法,能够达到不同的模板效果。

      相关实例:

      header 模板中

       --- 如果获取了 $discuz_uid ,即显示下面资料(判断1)

      $discuz_userss: {lang logout}

       --- 如果有 $maxpmnum,即显示下面资料,否则不显示(判断2)

      | {lang pm}

       --- 结束了这个判断(判断2)

      | {lang memcp}

       --- 如果$adminid在1,2,3这三个范围内,即显示下面资料,否则不显示(判断3)

      | {lang admincp}

       --- 结束了这个判断(判断3)

       --- 如果获取不了 $discuz_uid ,则显示下面资料

      {lang guest}: {lang register}

      | {lang login}

       --- 结束这个判断(判断1)

      2、在模板中会经常见到xxx的语句。

      这个为循环语句,直到数据输出完毕,就会自动结束。

      通过这些语法,能够达到把同一系列的资料进行循环显示效果。

      相关实例:

      header 模板中

       --- 循环1开始,判断插件

       --- 循环2开始,判断插件模组

      | $module[url]

       --- 结束循环2

       --- 结束循环1

      四、语言调用

      在模板中,经常会看到{lang xxx}这样的语句。它就是调用语言包中的词语用的。

      而在模板中会调用的大部分都是 templates.lang.php 的。

      下面看看语言包的结构:

      <? -- 宣布php语言开始

      $language = array

      ( --- 以上宣布语言包定义开始

      \'title\' => \'标题\',

      调用字符 显示文字

      \'never\' => \'从未\',

      调用字符 显示文字

      ....

      ); --- 宣告语言包定义结束

      ?> -- 宣布php语言结束

      相关实例:

      假设,我们增加一个语言调用,在

      \'title\' => \'标题\',

      上一行添加

      \'abc\' => \'这是测试语言调用\',

      最后的 , 是比不可少的,还有调用字符和显示文字,都必须使用 \'\' 引起。

      增加以后,到模板中,就能调用它,模板中写{lang abc}

      那么显示出来就直接显示: 这是测试语言调用

      特别注意: 增加语言或修改语言包后,必须更新缓存哦!

      五、风格参数调用

      在模板中常见到{XXXXX}的语句。{}中的必须是大写。

      这些都是调用风格配色方案中的参数。您可以可以自己添加,方法如下:

      1, 进入 界面风格 -> 界面风格 -> 您要添加参数的风格 点 [详情]

      2, 进入后最下面,有两栏可以填写,一个是变量,一个是替换内容

      相关实例1:

      变量写 COPYRIGHT (注意这里必须大写)

      替换内容写 这个是自定义风格变量

      提交后,修改模板,在模板文件中加上{COPYRIGHT},那么就可以显示出 这个是自定义风格变量。

      相关实例2:

      变量写 FOOTERCOLOR (注意必须使用大写)

      替换内容写 #003399

      提交后,修改模板,模板中写测试风格自定义变量

      那么出来的效果,这个 测试风格自定义变量 就会按照填写的替换内容的颜色来显示了。

      discuz模板语法定义

      2009-11-25 15:17

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

      a. <!–{ … }–>

      逻辑元素包围符,该符号用于包含条件和循环元素

      1. 条件判断

      

      statement1

      

      statement2

      

      statement3

      

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

      3. 不带下标变量的数组循环

      

      statement

      

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

      foreach($array as $value) {

      statement

      }

      5. 带下标变量的数组循环

      

      statement

      

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

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

      statement

      }

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

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

      b. { … }

      信息元素包围符

      1. {CONSTANT}

      可以引用界面替换变量,其中必须为大写字母,该符号实际的作用是引用 PHP 常量 CONSTANT,因此也可以通过它来引用其他的常量内容。

      2. {lang variable}

      可 以在模板中引用语言变量 variable 的内容,语言变量经由 templates.php.lang 中数组 $language 定义。如 {lang post_edit} 的内容在编译模板的时候被替换为 $language['post_edit'] 的内容,简体中文版的意思是“编辑帖子”。

      3. {template name}

      模板嵌入符,为了避免模板的冗长,可以使用本符号来将 name 模板的内容嵌入本模板中(实际上为引用)。

      4. {eval statement}

      运行 PHP 语句体 statement。推荐只在特别必须的时候才使用该结构,因为它会破坏模板的结构和可读性。如 {eval echo ‘template!’;} 实现的功能为 echo ‘template’;

      5. {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,以便导入程序自动建立模板记录和文件夹。

      定义变量说明

      

      

      

      123

      

      

      

      

      //如果i除以2的余数等于0

      

      

      · [$value[typename]]

      class=”listA” href=”$value[url]” title=”$value[subjectall]” target=”_blank”>$value[subject]

      

      

      

       ”;}–>

      <!–{eval}}–>

  • 相关阅读:
    WebStorm 2017.1.2 汉化破解
    gulp实时刷新页面
    图片转base64
    swiper使用案例一
    js生成GUID
    css实现0.5像素
    mac上搭建appium+IOS自动化测试环境(二)
    6. 使用antd pro构建web页面
    5. 使用Flask蓝图(blueprint)
    4. 为HelloWorld添加日志
  • 原文地址:https://www.cnblogs.com/zhuangjinhui/p/2677460.html
Copyright © 2020-2023  润新知