Discuz!模板解析语法
PHP中使用template()函数显示已存在模板
- 在Discuz!程序执行中可以通过 include template('模板文件夹/模板名称无后缀');的方式进行解析,前提是您使用的Discuz!程序已经包含了 ./source/function/function_core.php 的函数库
PHP格式的模板
[X2.5新增内容]
从 Discuz! X2.5 开始,模板文件支持 PHP 扩展名的格式,你可以创建例如 ./template/mytext/common/forum/discuz.php 文件,PHP 的模板文件中你只需在原有 HTM 的模板文件开头添加一行代码即可,如:
<?php exit;?>
<?php echo '你不能看此模板的内容';exit;?>
PHP 的模板文件的模板数据内容将从文件的第二行开始解析。PHP 和 HTM 模板文件同时存在时,会优先解析 PHP 模板文件
模板语法
变量输出
- 输出一个变量的值,等同于php的 <?php echo $my_var;?>,花括号可以省略但不建议去掉。
{$my_var}
条件判断
- 通过if判断流程分支
- 如果写在HTML表单元素中,可以省去使代码更清晰易读,如{if $my_var}xxx{/if}
<!--{if $my_var}-->任意html语句 <!--{/if}-->
- 带有多条件的if写法,可使用PHP常规判断中的按位运算符等
<!--{if $my_var && ($my_var2 & 1 || $my_var3 == 3)}-->任意html语句 <!--{/if}-->
- 带有分支条件的if写法
<!--{if $my_var == 1}-->变量为1 <!--{elseif $my_var == 2}-->变量为2 <!--{else}-->其他情况 <!--{/if}-->
循环输出
- 带有数组键的循环写法
<!--{loop $my_arr $key $val}-->循环输出的HTML语句 <!--{/loop}-->
- 没有数组键的循环写法
<!--{loop $my_arr $val}-->
模板嵌套
- 将被嵌套模板内容解析为PHP语句并合并入本模板中的写法
- common/header 对应某个模板套系中的common目录的header.htm模板文件
<!--{subtemplate common/header}-->
- 程序运行时include嵌套模板内容
<!--{template common/header}-->
插件钩子
- 在模板中设立插件钩子
- hook为关键词,意为将index_top定义为钩子
<!--{hook/index_top}-->
变量数组嵌套使用
- 条件判断或变量输出时用到
<!--{if $my_arr[$my_var]}--> <!--{if $my_arr[0]}--> <!--{if $my_arr[$my_arr2[$my_var]]}-->
PHP解析
- 在模板中使用PHP语句可以通过{eval}进行
<!--{eval $my_var = 1;}--> <!--{eval echo $my_var;}--> <!--{eval $my_arr = array(1, 2, 3);}--> <!--{eval print_r($my_arr);}--> <!--{eval output();}--> <!--{eval exit();}-->
- 多行PHP解析(Discuz! X3 新增)
<!--{eval}--> ...PHP语句... <!--{/eval}-->
语言包使用
- 在模板中可以通过下面的代码来使用语言包中的某个值
{lang index_yesterday}
- 其中语言包在 ./source/language/目录下,以PHP数组形式存放
插件模板和语言包的设计
综合示例
- 综合示例题目1:php程序中创建一个数组并在模板中循环,并且根据模板显示奇数行输出不同的CSS样式
- PHP端代码:
- 此PHP代码省略了包含 class_core.php 以及初始化$_G变量,详细请查看:
<?php/*此处省略include class_core.php*/$my_arr = array('one', 'two', 'three', 'four');include template('forum/mytest'); //使用自定义模板套系中的forum目录的mytest.htm ?>
- 模板代码:
<!--{loop $my_arr $key $val}--><div {if $key % 2 == 1}style="background: #ccc;"{/if}>这里是value值:{$val}</div><!--{/loop}-->
- 综合示例题目2:结合风格常量与javascript,动态改变模板页面的字体大小,并引用默认模板的header和footer
- 默认风格中,小号字体大小 {SMFONTSIZE}为0.83em,主题列表字体大小 {THREADTITLEFONTSIZE}为14px,在Disucz!X2中使用时,需要使用G[′style′][′SMFONTSIZE′]和G[′style′][′SMFONTSIZE′]和_G['style']['THREADTITLEFONTSIZE']。
- $('test1')此写法是因为header中已经加载了common.js全局javascript脚本文件,可以通过简写来达到document.getElementById('test1')的效果
- ./template/mytest/forum/mytest.htm模板代码如下
<!--{subtemplate common/header}--> <div id="test1" style="font-size:{$_G['style']['FONTSIZE']};">这是一个改变字体的实例 </div> <span οnclick="changefontsize('{$_G['style']['SMFONTSIZE']}');">改变小号字</span><span οnclick="changefontsize('{$_G['style']['THREADTITLEFONTSIZE']}');">改变为大号字</span> <script type="text/javascript"> function changefontsize(size) {$('test1').style.fontSize = size; } </script> <!--{subtemplate common/footer}-->
Discuz!模板解析语法相关推荐
- discuz模板引擎语法
论坛的首页模板:forum/discuz.htm 版块的内容模板:forum/forumdisplay.htm 主题的查看模板:forum/viewthread.htm 帖子的内容模板:forum/p ...
- discuz模板解析注释
<?php function parse_template($tplfile, $objfile) { global $options; //循环嵌套次数 $nest = 3; //打开模板文件 ...
- php模板机制,ECMall模板解析语法与机制
马上注册,学习更多技术,享用更多经验,获取更多辅助工具. 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 在ECMall模板中,用"{"开头,以"}"结 ...
- ECMALL模板解析机制
ECMall模板解析语法与机制 在ECMall模板中,用"{"开头,以"}"结尾就构成一个标签单元,"{"紧接着的单词就是标签名.在标签单元 ...
- 【discuz】discuz模板语法
Discuz! X 模板的解析主要是 ./source/class/class_template.php 文件解析处理的,如果需要深入了解请可以看看这个文件! 模板嵌套语法 将被嵌套模板内容解析为 P ...
- tal php x 1,PHP中TAL模板引擎语法的解析(代码)
这篇文章给大家介绍的内容是关于php TAL模板引擎语法,内容很详细,有需要的朋友可以参考一下,希望可以帮助到大家. PHP 数据 本文档的使用到的数据($talData)//定义talData变量 ...
- Discuz模板引擎标签
界面风格与模板定制的详细说明 Discuz! 的模板采用文件保存,默认模板保存在 ./templates/default/ 目录中,该目录下 *.htm 文件是模板文件,*.lang.php 是语言包 ...
- velocity模板的语法简要汇总
velocity模板的语法简要汇总 What's velocity Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template ...
- ECMall2.x模板制作入门系列之2(模板标签/语法)
ECMall2.x模板制作入门系列之2(模板标签/语法)今天给大家带来一个模板语法的教程.希望能为ECMall模板制作者提供一份参考资料.如有问题.建议和意见,欢迎提出.在ECMall模板中,用&qu ...
- Themleaf模板基础语法使用介绍
Themleaf模板基础语法使用介绍 项目首页地址:https://blog.csdn.net/weixin_45019350/article/details/108869025 一. Thymele ...
最新文章
- verify https android,信任https
- vue 保存全局变量_Vue+Typescript起手式
- ASIHTTPRequest 简单应用
- 微信公众号监听返回按钮问题解决
- Android日志系统分析之开篇
- Java数据库——事务处理
- mysql redis qps_Redis QPS测试
- 5g上行速率怎么提升_揭秘联发科5G独家技术,攻克上行覆盖和终端功耗两大技术难题...
- 阿里云OSS对象存储STS鉴权配置
- (转)使用Spring配置文件实现AOP
- 苹果iOS 13概念曝光 音量UI大改鼠标即时配对
- java多线程线程池_Java多线程——线程池(ThreadPool)
- 如何安装mysql 8.0.12_基于Windows安装MySQL 8.0.12图文教程
- mac 安装adb工具
- Open EtherCAT Society——SOEM、SOES
- 2020互联网公司中秋礼盒大比拼(22家互联网厂商)
- 如何在 mac os 上双开微信?
- Django读取图片
- 这里除了安全,什么都不会发生!Docker镜像P2P加速之路
- 用水浒传来学习OKR