一、加载模板

使用template()函数显示已存在模板:

在Discuz!程序执行中可以通过 include template('模板文件夹/模板名称无后缀');的方式进行解析!

template()函数定义于./source/function/function_core.php

Discuz!模板的解析逻辑定义于./source/class/class_template.php

如果需要深入了解请可以看看这两个文件!

二、模板嵌套语法

将被嵌套模板内容解析为 PHP 语句并合并入本模板中的写法

<!--{subtemplate common/header}-->

或者

<!--{template common/header}-->

common/header 对应某个模板套系中的 common 目录的 header.htm 模板文件

提示:当模板中有较多 loop 时,尽量用 subtemplate

三、逻辑判断 if...else

如果写在 HTML 表单元素中,可以省去使代码更清晰易读,如{if $my_var}xxx{/if}

<!--{if $_G['uid']}--> 任意html语句 <!--{/if}-->

带有分支条件的 if 写法

<!--{if $_G['uid']}--> 任意 html 语句 <!--{elseif $_G[connectguest]}--> 任意html语句 <!--{/if}-->

带有多条件的 if 写法,可使用 PHP 常规判断中的按位运算符等

<!--{if empty($_G['forum']['picstyle']) && $_GET['orderby'] == 'lastpost' && empty($_GET['filter']) }-->

任意 html 语句

<!--{/if}-->

CSS 书写时也可以按条件进行判断设置设置例如:

<td class="fl_g"{if $forumcolwidth} width="$forumcolwidth"{/if}>

四、模板里直接执行 PHP 代码标签:

<!--{eval echo $my_var;}-->

<!--{eval $my_arr = array(1, 2, 3);}-->

<!--{eval print_r($my_arr);}-->

<!--{eval output();}-->

<!--{eval exit();}-->

五、模板里直接输出变量,等同于 PHP 的 <?php echo $my_var; ?>, 花括号可以省略但不建议去掉。(模块程序处理后才能在这里调用):

<div id="anc"><ul id="ancl">$announcements</ul></div>

<!--{echo cutstr($group[lastpost][subject], 30)}-->

六、广告的嵌入点代码:

<!--{ad/headerbanner/wp a_h}-->

七、插件的钩子标签:

<!--{hook/global_usernav_extra2}-->

hook为关键词,意为将index_top定义为钩子

八、模板里变量循环语法(可以多重循环)

带有数组键的循环写法

<!--{loop $my_arr $key $val}-->

循环输出的HTML语句

<!--{/loop}-->

没有数组键的循环写法

<!--{loop $_G['setting']['navs'] $nav}-->

循环输出的HTML语句

<!--{/loop}-->

九、模板DIY区域和后台数据调用标签:

<!--[diy=diy1]--><div id="diy1" class="area"></div><!--[/diy]-->

{block XXX}(数据调用模块)

十、Discuz!语言包加载后,模板文件中的使用:

{lang forum_category_modedby}

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

Discuz!开发之模板标签语法学习的更多相关文章

  1. ECMall2.x模板制作入门系列之2(模板标签/语法)

    ECMall2.x模板制作入门系列之2(模板标签/语法) 今天给大家带来一个模板语法的教程.希望能为ECMall模板制作者提供一份参考资料.如有问题.建议和意见,欢迎提出. 在ECMall模板中,用& ...

  2. ecshop 二次开发及模板标签

    ecs_account_log // 用户账目日志表   ecs_activity // 活动表(代码,名称,开始,结束,描述)   ecs_ad // 广告表(位置,类型,名称,链接,图片,开始,结 ...

  3. pythonDjango开发-自定义模板标签

    1.在APP同级目录新建文件夹'templatetags' 并在文件夹下创建__init__.py和定义标签用的customer.py文件 2.在customer.py文件中定义自定义标签 from ...

  4. python的Web框架,Django模板标签及模板的继承

    模板标签 在传递数据的时候,会有大量的数据展示在浏览器上,而数据会是动态变化的,在html的编写中,数据也是需要动态的,而不能是写死的,如果动态展示呢. 给定的例子数据 views传递数据给html ...

  5. Django 内置模板标签和过滤器

    一.内置模板标签 语法:{%  %} autoescape : 是否转义,on或off作为参数,并确定自动转义是否在块内有效.该块以endautoescape结束 {% autoescape on % ...

  6. (转)DEDECMS模板原理、模板标签学习 - .Little Hann

    本文,小瀚想和大家一起来学习一下DEDECMS中目前所使用的模板技术的原理: 什么是编译式模板.解释式模板,它们的区别是什么? 模板标签有哪些种类,它们的区别是什么,都应用在哪些场景? 学习模板的机制 ...

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

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

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

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

  9. Discuz!X/模板标签说明

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

随机推荐

  1. config 文件读取

    在项目中我们经常要使用到config文件进行相应的配置,来使我们的项目更加灵活健壮. 最常见的就connetionStrings .appSettings这两个节点,那么我们怎么读取呢? 1.首先 我 ...

  2. SpringBoot第三篇:配置文件详解二

    作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/10615605.html 版权声明:本文为博主原创文章,转载请附上博文链接! 前言   本文主要讲 ...

  3. tomcat闪退的解决思路

    用Tomcat总会遇到启动Tomcat闪退的问题. 什么叫闪退啊,就是闪一下,就退出了控制台. 都闪退了,为啥闪退也不知道呀,又没有错误信息,所以就要先阻止闪退,先看到错误信息,知道启动不起来的原因. ...

  4. 关于预装操作系统的ThinkPad的分区建议

    Think的个人电脑产品大部分预装有正版操作系统,当前新产品出厂时默认都是一个大分区“C”和一个恢复分区“Q”,很多用户都会要求客服人员提供分区服务,在这里我简单说一下关于分区的几点注意事项望各位参考 ...

  5. app 崩溃测试 (转:CSDN 我去热饭)

    首先,崩溃有几种情况: 闪退 提示停止运行 无响应 ( 不同情况虽然没有严格意义上区分开引起原因,但是都有侧重.在之后的工作中,我会实时补充统计.) 1.接口返回值 [直接原因]:app无法解析接口返 ...

  6. Centos7利用rsync实现文件同步

    0x01 测试环境 CentOS 7.4 Rsync服务端:192.168.204.130 CentOS 7.4 Rsync客户端:192.168.204.168 0x02 rsync同步方式 第一种 ...

  7. excel中使用统计列中的值在其他列出现的次数

    excel中使用统计一列的中值在其他列出现的次数 =COUNTIFS($J$:$J$,K2) 解释下 $J$2 J列中的第二行到 $J$373 J列的373行  范围内 查找 k列的第二行的值 出现的 ...

  8. Application类-多窗口交互

    我们在派生自Application类中出来放置响应应用程序事件的代码外,还可以放置一些完成其他任务的代码. 在此之前要知道: 如何获取应用程序的Application对象: //App是一个继承自Ap ...

  9. 初学者学习golang可能遇到的坑

    我也是个golang初学者,刚入门的话,有些"坑"还是不好发现的.如map只是定义了然后就拿来使用,变量的值覆盖等. 本来打算写一篇的,后面发现有人写的挺不错的,我就把里面的有些坑 ...

  10. python类的构造函数

    最新的 Python3.7 中(2018.07.13),对类的构造函数进行了精简. from dataclasses import dataclass @dataclass class A: x:in ...