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数组形式存放

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

  1. 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. java email

    package email; import java.io.File;import java.util.Date;import java.util.Properties; import javax.a ...

  2. Python学习-基础知识-2

    目录 Python基础知识2 一.二进制 二.文字编码-基础 为什么要有文字编码? 有哪些编码格式? 如何解决不同国家不兼容的编码格式? unicode编码格式的缺点 如何既能全球通用还可以规避uni ...

  3. (转)CentOS7 LVM添加硬盘及扩容

    原文:http://blog.51cto.com/qicheng0211/1620171 9818人阅读   一.LVM简介 LVM是 Logical Volume Manager(逻辑卷管理)的简写 ...

  4. 浅谈flex布局

    Flex布局,俗称弹性布局,有了这个布局,咱们做的事情很多,以前那些很难实现比如说垂直居中之类都不存在了. 盒模型布局依赖于float,display,定位之类的方式来布局,这种的布局对一些特殊布局来 ...

  5. c++ 常用的遍历,删除,分割等等文件处理函数代码实现

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9622851.html 删除文件目录函数: void myDeleteDirectory(CSt ...

  6. The “SignFile” task was not given a value for the required parameter “CertificateThumbprint”的一个简单的解决方法

    这个只是其中一种解决方法,而且不是万能的 1. 由提示内容可以看出,这个一个 sign(认证)的问题, 在出现这个问题的项目上,鼠标右键,选择properties,然后选择signing. 2. 选择 ...

  7. 通过mongodump和mongorestore实现Mongodb备份和恢复

    Mongodb自带了mongodump和mongorestore这两个工具来实现对数据的备份和恢复. mongodump能够在Mongodb运行时进行备份,它的工作原理是对运行的Mongodb做查询, ...

  8. Javascript替代eval方法

    Javascript替代eval方法 通常我们在使用ajax获取到后台返回的json数据时,都要使用 eval 这个方法将json字符串转换成对象数组, 像这样: obj = eval('('+dat ...

  9. Firebird Case-Insensitive Searching 大小写不敏感查找

    Firebird 默认是大小写敏感,在检索的时候. 要想不敏感检索,两种方法: 1.where upper(name) = upper(:flt_name) 2.检索时指定字符集collation,例 ...

  10. A space or line break was encountered after the "@" character. Only valid identifiers, keywords, comments, "(" and "{" are valid at the start of a code block and they must occur immediately following

    mvc 控制器调用分布视图出错,("A space or line break was encountered after the "@" character. Only ...