Discuz! X 模板的解析主要是 ./source/class/class_template.php 文件解析处理的,如果需要深入了解请可以看看这个文件!

    1. 模板嵌套语法

      将被嵌套模板内容解析为 PHP 语句并合并入本模板中的写法
      <!--{subtemplate common/header}-->
      common/header 对应某个模板套系中的 common 目录的 header.html 模板文件

      程序运行时include嵌套模板内容
      <!--{template common/header}-->

      注释:当模板中有较多 loop 时,尽量用 subtemplate

    2. 逻辑判断 if...else

      1. 如果写在 HTML 表单元素中,可以省去使代码更清晰易读,如{if $my_var}xxx{/if}
        <!--{if $_G['uid']}--> 任意html语句 <!--{/if}-->//如果是在对html标签某个属性值做判断时显得尤为重要,如果在标签之外的话,最好加上<!-- -->注释符号

         
         
      2. 带有分支条件的 if 写法
        <!--{if $_G['uid']}--> 任意 html 语句 <!--{elseif $_G[connectguest]}--> 任意html语句 <!--{/if}-->
      3. 带有多条件的 if 写法,可使用 PHP 常规判断中的按位运算符等
        <!--{if empty($_G['forum']['picstyle']) && $_GET['orderby'] == 'lastpost' && empty($_GET['filter']) }-->
            任意 html 语句 
        <!--{/if}-->
      4. CSS 书写时也可以按条件进行判断设置设置例如:
        <td class="fl_g"{if $forumcolwidth} width="$forumcolwidth"{/if}> //正如上面所说,对html标签中属性值做判断的时候,可以省略注释符<!-- -->
    3. 直接执行 PHP 代码标签:

      <!--{eval echo $my_var;}--> //相当于 <?php echo $my_var;?>
      <!--{eval $my_arr = array(1, 2, 3);}--> //相当于 <?php $my_arr=array(1,2,3);?>
      <!--{eval print_r($my_arr);}--> //相当于<?php print_r($my_arr);?>
      <!--{eval output();}--> //相当于<?php output();?>
      <!--{eval exit();}--> //相当于 <?php exit();?>
    4. 直接输出变量,等同于 PHP 的 <?php echo $my_var; ?>, 花括号可以省略但不建议去掉。(模块程序处理后才能在这里调用):

      <div id="anc"><ul id="ancl">$announcements</ul></div>//一般情况下输出的内容不是简单的变量
      <!--{echo cutstr($group[lastpost][subject], 30)}--> //使用条件:1-变量需经函数处理  2-输出的是变量,不能是数组
    5. 广告的嵌入点代码:

      <!--{ad/headerbanner/wp a_h}--> //这是discuz内嵌广告,建议大家自定义广告位,自定义的广告位在后台会自动生成调用代码,我们只需要粘贴复制即可
    6. 插件的钩子标签:

      <!--{hook/global_usernav_extra2}-->
      hook为关键词,意为将index_top定义为钩子
    7. 循环语法(可以多重循环)

      带有数组键的循环写法
      <!--{loop $my_arr $key $val}-->
          循环输出的HTML语句
      <!--{/loop}-->

      没有数组键的循环写法
      <!--{loop $_G['setting']['navs'] $nav}-->
          循环输出的HTML语句
      <!--{/loop}-->

    8. DIY 区域和后台数据调用标签:

      <!--[diy=diy1]--><div id="diy1" class="area"></div><!--[/diy]-->  //尽量避免使用discuz的diy功能,因为维护大家很大,可直接通过后台自定义模块或模块代码
      {block XXX}(数据调用模块)
    9. Discuz! 语言包加载后,模板文件中的使用:

      {lang forum_category_modedby}
      其中语言包在 ./source/language/目录下,以PHP数组形式存放

discuz模板语法的更多相关文章

  1. PHP discuz模板语法

    Discuz! X 模板的解析主要是 ./source/class/class_template.php 文件解析处理的,如果需要深入了解请可以看看这个文件! 模板嵌套语法 将被嵌套模板内容解析为 P ...

  2. Discuz!模板解析语法

    <!--{eval echo autostart("); }--> PHP中使用template()函数显示已存在模板 在Discuz!程序执行中可以通过 include tem ...

  3. 我是如何给discuz模板做语法高亮的

    本人一直做ASP.NET开发,近期接到任务要用Discuz开发一个社区,第一次接触PHP,PHP灵活的语法,天生的模块化,各种语法糖深深的震惊了我,我从内心深处感受到了PHP是最牛逼的语言!!! 好了 ...

  4. 我是如何给discuz模板做语法高亮的/vs code/textmate

    本人一直做ASP.NET开发,近期接到任务要用Discuz开发一个社区,第一次接触PHP,PHP灵活的语法,天生的模块化,各种语法糖深深的震惊了我,我从内心深处感受到了PHP是最牛逼的语言!!! 好了 ...

  5. discuz模板引擎

    discuz是采用“编译型的模板”,就是指采用普通网页文件保存,在文件中插入需要动态显示数据的仿php的代码,最后进行编译成真正的php的文件保存为模板缓存文件,这个转换的过程就称为编译.在用户浏览页 ...

  6. Discuz 模板标签说明

    Discuz 模板标签说明 Discuz! 的模板采用近似 PHP 表达式的语法,基本都是可识别的HTML,但涉及到变量和动态内容时,基本形式下: <!-{ 代码内容 }-> 逻辑元素包围 ...

  7. angular2系列教程(二)模板语法

    今天我们要讲的是angualr2的模板语法,官网写的很清楚,但我也用通俗易懂的讲法再罗列一下吧! 例子

  8. Angular2 模板语法

    1. 说明 Angular2的模板用来显示组件外观,作为视图所用,用法和html语法基本一致,最简单的Angular2的模板就是一段html代码.Angular模板语法主要包括以下几个部分: l 直接 ...

  9. discuz教程:discuz模板js与jQuery冲突的解决方案

    今天在做discuz模板的时候,用到jquery的时候和原来主题js冲突.这个主要是Discuz X使用了$(id)作为dom节点的获取方法,而$符号刚好与jQuery的默认符号相冲突. 以下是基于之 ...

随机推荐

  1. Python(九) Python 操作 MySQL 之 pysql 与 SQLAchemy

    本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...

  2. Unity3D框架插件uFrame实践记录(二)

    5.创建属性和命令 本小节主要内容包括: 在Element节点上创建属性数据 在Element节点上创建命令数据 5.1.在Element节点上创建属性数据 在这里,我们首先为Login节点中的属性( ...

  3. H5 canvas的 width、height 与style中宽高的区别

    Canvas 的width height属性 1.当使用width height属性时,显示正常不会被拉伸:如下 <canvas id="mycanvas" width=&q ...

  4. Android中点击事件的实现方式

    在之前博文中多次使用了点击事件的处理实现,有朋友就问了,发现了很多按钮的点击实现,但有很多博文中使用的实现方式有都不一样,到底是怎么回事.今天我们就汇总一下点击事件的实现方式. 点击事件的实现大致分为 ...

  5. Linux学习日记-MVC的部署(三)

    一.Mvc与wcf 相对WCF的部署MVC还是有点麻烦,我们要考虑哪些dll是不需要的,哪些是要拷贝到本地的. 而WCF因为有些配置文件不支持,我们只需要在配置wcf时不使用配置文件而直接使用代码就行 ...

  6. Eclipse常用设置

    用惯了VS,再回过去用Eclipse真是一件痛苦的事.so,在这里记录下使用过程中的一些设置以做备忘. 1.代码自动提示 在我们忘记方法名或者想偷懒时,代码自动提示很管用.不过Eclipse默认是输入 ...

  7. Entity Framework 6 Recipes 2nd Edition(13-8)译 -> 把昂贵的属性移到其它实体

    问题 你想把一个昂贵的属性移到另一个实体,这样你就可以延迟加载当前这个实体.对于一个加载昂贵的而且很少用到的属性尤其有用. 解决方案 模型和上一节(Recipes 13-7)的一致,如Figure13 ...

  8. 日期格式 CST

    从es 取出来一个date 字段, 结果竟然是 2016-10-10T10:48:58.000Z 这样的字符串, 这个是什么格式啊??? CST ? 只能自己转换了! 通过"yyyy-MM- ...

  9. shell script 执行常用的两种方式

    2016-11-17 直接输入脚本名执行 ./script #!/bin/bash# /root/shell/001 # 2016-11-17 test for script running name ...

  10. 特殊的数据类型: bit、sql_variant、sysname

    在SQL Server中,特殊的数据类型主要有三个,分别是:bit.sql_variant 和 sysname 一,bit bit类型,只有三个有效值:0,1 和 null,字符串true或false ...