discuz模板语法

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

时间: 2024-11-06 03:40:19

discuz模板语法的相关文章

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

本人一直做ASP.NET开发,近期接到任务要用Discuz开发一个社区,第一次接触PHP,PHP灵活的语法,天生的模块化,各种语法糖深深的震惊了我,我从内心深处感受到了PHP是最牛逼的语言!!! 好了回到正题,初次看Discuz的模板,用VS打开是这样的: 没错,第一眼看上去就震惊了,这TM怎么维护?模板随随便便就2000行,因为DZ是一个极灵活的论坛,里面放了各种hook点用于扩展功能!所以模板非常庞大复杂. DZ的模板语法采用了HTML注释扩展(有一部分内联的却是破坏性的),见: http:

discuz门户首页-header文件模板语法详解和注释

header文件引用了跟多通用模板,所以整个文章会很长,现在比较忙,注释工作会不定期进行 首先开下门户首页的文件 portal里面的index.htm <!--{template common/header}--> //引用common文件下的header.htm这个也是引用模板文件的一种常用方法 <style id="diy_style" type="text/css"></style> //没什么用 <div class

discuz模板引擎

discuz是采用“编译型的模板”,就是指采用普通网页文件保存,在文件中插入需要动态显示数据的仿php的代码,最后进行编译成真正的php的文件保存为模板缓存文件,这个转换的过程就称为编译.在用户浏览页面的时候,会自动加载模板缓存文件,将php程序执行的结果代入这些文件中执行输出,当模板缓存文件丢失或者文件被修改,系统会自动监测这一点然后进行重新生成模板缓存文件. 页面缓存刷新原理:当开发者编辑过模板文件之后,Discuz! 模板解析器会匹配模板htm文件与缓存php文件的最后修改时间,如过模板h

Angular 2 模板语法与常用指令简介

一.模板语法简介 插值表达式 <div>Hello {{name}}</div> 等价于 <div [textContent]="interpolate(['Hello'], [name])"></div> 模板表达式 1.属性绑定 1.1输入属性的值为常量 <show-title title="Some Title"></show-title> 等价于 <show-title [titl

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

今天在做discuz模板的时候,用到jquery的时候和原来主题js冲突.这个主要是Discuz X使用了$(id)作为dom节点的获取方法,而$符号刚好与jQuery的默认符号相冲突. 以下是基于之前的Discuz X和jQuery冲突的解决办法.给大家做个参考! 将jQuery的js文件jquery-1.8.0.min.js放到/static/js目录下,以下两个方法共用此文件,如不是放在该目录下,后面的代码请对应修改. 解决方法1: 修改/template/default/common/h

discuz 模板中如何使用方法和语言标签?

第一个问题:如何调用方法? 关于模板中eval的使用{eval php 语句}比如:<!--{eval echo "Hello World!"}--> 工作中遇到一个小问题,discuz的手机模板中,需要切换收藏和取消收藏. 取消收藏,需要找到forum/viewthread.htm .forum/viewthread_node.htm 模板,在viewthread_node模板中修改取消收藏的 最低层代码 /source/include/spacecp/spacecp_f

vue.js 学习之模板语法详解

本文和大家分享的主要是vue.js 的模板语法,希望对大家学习vue.js有所帮助,一起来看看吧. Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据.所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循规范的浏览器和 HTML 解析器解析. 在底层的实现上, Vue 将模板编译成虚拟 DOM 渲染函数.结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上. 如果你熟悉虚拟 D

django之定义模板语法08({{ string | truncatewords:&#39;2&#39; }})

#index页面代码: <html> <head> <title>DOcument</title> </head> <body> <h1>{{user}}</h1> </br> </br> <h1>过滤器</h1> <p>{{ string | truncatewords:'2' }}</p> //显示前2个字(非字母) </body

vue 模板语法

模板语法 Vue.js使用了基于HTML的模板语法,允许开发者声明式将DOM绑定至底层Vue实例的数据.所有Vue.js的模板都是合法的HTML,所以可以被遵循规范的浏览器和HTML解析器解析. 在底层的实现上,Vue将模板编译成虚拟DOM渲染函数.结合响应系统,在应用系统改变时,Vue能够智能计算出重新渲染组件的最小代价并应用到DOM操作上. 插值 #文本 数据绑定最常见的形式就是使用"Mustache"语法(双大括号)的文本插值: {{msg}} 通过使用v-once指令,你也能执