Discuz 模板语句分析及知识技巧


Posted in PHP onAugust 21, 2009

  一、模板 调用
比如在某个模板中,想调用另一个模板中的内容,可以用下面的语句:
{template xxx}
假设,建立了一个新模板名字叫 "abc.htm" ,在后台 模板编辑时只会显示为 "acb",需要在 index 中调用它,那么就在index 中适当位置加入 {template abc}
那么就会自动代用它。

相关实例: index 模板中,最顶有 {template header},最底有 {template footer}
相关疑问:
那么在这个 abc 模板中需要有 <html><body></body></html> 吗?
不需要的!想要显示什么,就写什么,因为它只是整个网页的一部分! <html><body></body></html> 都已经在header和footer模板中了。

二、固定参数
$seohead                        --- 后台设置 的头部信息
$charset                        --- config.inc.php中设置语言字符集,必不可少,不能删除!
$extrahead                        --- 控制论坛 自动跳转参数,必不可少,不能删除!
{eval updatesession();}                --- 更新论坛 session 表的参数,必不可少,不能删除!
{eval output();}                --- 结束论坛输出,必不可少,不能删除!

以上的参数以Discuz ! 4.0为准,这些参数会因应不同版本而有所不同!
还有一些 $xxx 的也是一些参数如非插件 作者或程序 开发请勿乱修改!

三、数据 判断
   1、在模板中会经常见到<!--{if xx}-->xxx<!--{else}-->xx<!--{/if}-->的语句。
      这些并非普通HTML 中的注释,而是Discuz!特有的模板判断语法,就好比php 或者其他 语法中的 if,else,then等等。
      通过这些语法,能够达到不同的模板效果

相关实例:
header 模板中

复制内容到剪贴板
代码 :
<!--{if $discuz_uid}--> --- 如果获取了 $discuz_uid ,即显示下面资料(判断1)
        <span class="bold">$discuz_userss: </span> <a href="$link_logout">{langlogo ut}</a>

        <!--{if $maxpmnum}--> --- 如果有 $maxpmnum,即显示下面资料,否则不显示(判断2)
                | <a href="pm.php" target="_blank">{lang pm}</a>
        <!--{/if}--> --- 结束了这个判断(判断2)

        |  <a href="memcp.php">{lang memcp}</a>

        <!--{if in_array($adminid, array(1,2,3))}--> --- 如果$adminid在1,2,3这三个范围内,即显示下面资料,否则不显示(判断3)
                | <a href="admincp.php" target="_blank">{lang admincp}</a>
        <!--{/if}--> --- 结束了这个判断(判断3)

<!--{else}--> --- 如果获取不了 $discuz_uid ,则显示下面资料

        <span class="bold">{lang guest}:  </span><a href="$link_register">{lang register}</a>
        | <a href="$link_login">{lang login}</a>

<!--{/if}--> --- 结束这个判断(判断1)

2、在模板中会经常见到<!--{loop xx}-->xxx<!--{/loop}-->的语句。
      这个为循环语句,直到数据输出完毕,就会自动结束。
      通过这些语法,能够达到把同一系列的资料进行循环显示效果。

相关实例:
header 模板中

复制内容到剪贴板
代码:
<!--{loop $plugins['links'] $plugin}--> --- 循环1开始,判断插件
        <!--{loop $plugin $module}--> --- 循环2开始,判断插件模组
             <!--{if !$module['adminid'] || ($module['adminid'] && $adminid > 0 && $module['adminid'] >= $adminid)}-->| $module[url] <!--{/if}-->
        <!--{/loop}--> --- 结束循环2
<!--{/loop}--> --- 结束循环1

四、语言调用
在模板中,经常会看到{lang xxx}这样的语句。它就是调用语言包中的词语用的。
而在模板中会调用的大部分都是  templates.lang.php 的。
下面看看语言包的结构:

复制内容到剪贴板
代码:
<?  -- 宣布php语言开始
$language = array
(                        --- 以上宣布语言包定义开始

        'title' => '标题',
        调用字符    显示文字
        'never' => '从未',
        调用字符    显示文字
        ....
); --- 宣告语言包定义结束
?>  -- 宣布php语言结束

相关实例:
假设,我们增加一个语言调用,在
'title' => '标题',
上一行添加
'abc' => '这是测试语言调用',
最后的 , 是比不可少的,还有调用字符和显示文字,都必须使用 '' 引起。
增加以后,到模板中,就能调用它,模板中写{lang abc}
那么显示出来就直接显示: 这是测试语言调用

特别注意: 增加语言或修改语言包后,必须更新缓存哦!

五、风格 参数调用
在模板中常见到{XXXXX}的语句。{}中的必须是大写。

这些都是调用风格配色方案中的参数。您可以可以自己添加,方法 如下:
  1, 进入 界面风格 -> 界面风格 -> 您要添加参数的风格 点 [详情]
  2, 进入后最下面,有两栏可以填写,一个是变量,一个是替换内容

相关实例:
   变量写 FOOTERCOLOR (注意必须使用大写)
   替换内容写 #003399
提交后,修改模板,模板中写<font color="{FOOTERCOLOR}">测试风格自定义变量</font>
那么出来的效果,这个 测试风格自定义变量 就会按照填写的替换内容的颜色来显示了。
经过上面说了那么多,对于修改模板的时候需要注意或者可以应用到的应该让您了解不少了!

希望对您有帮助,Enjoy It!

PHP 相关文章推荐
使用 php4 加速 web 传输
Oct 09 PHP
测试您的 PHP 水平的题目
May 30 PHP
php学习之简单计算器实现代码
Jun 09 PHP
PHP详解ASCII码对照表与字符转换
Dec 05 PHP
php的$_FILES的临时储存文件与回收机制实测过程
Jul 12 PHP
mac环境中使用brew安装php5.5.15
Aug 18 PHP
如何使用php实现评委评分器
Jul 31 PHP
PHP工程师VIM配置分享
Dec 15 PHP
PHP的几个常用加密函数
Feb 03 PHP
实现PHP框架系列文章(6)mysql数据库方法
Mar 04 PHP
PHP中串行化用法示例
Nov 16 PHP
thinkphp 字母函数详解T/I/N/D/M/A/R/U
Apr 03 PHP
php 分页原理详解
Aug 21 #PHP
PHP nl2br函数 将换行字符转成 &amp;lt;br&amp;gt;
Aug 21 #PHP
PHP 各种排序算法实现代码
Aug 20 #PHP
谈PHP生成静态页面分析 模板+缓存+写文件
Aug 17 #PHP
数据库查询记录php 多行多列显示
Aug 15 #PHP
PHP 实现多服务器共享 SESSION 数据
Aug 15 #PHP
php 静态页面中显示动态内容
Aug 14 #PHP
You might like
轻松入门: 煮好咖啡的七个诀窍
2021/03/03 冲泡冲煮
创建配置文件 用PHP写出自己的BLOG系统 2
2010/04/12 PHP
Zend Framework动作控制器用法示例
2016/12/09 PHP
php实现websocket实时消息推送
2018/03/30 PHP
Javascript hasOwnProperty 方法 &amp; in 关键字
2008/11/26 Javascript
用jquery实现的模拟QQ邮箱里的收件人选取及其他效果(一)
2011/01/06 Javascript
mailto的使用技巧分享
2012/12/21 Javascript
JS中使用Array函数shift和pop创建可忽略参数的例子
2014/05/28 Javascript
jQuery实现带渐显效果的人物多级关系图代码
2015/10/16 Javascript
javascript编程异常处理实例小结
2015/11/30 Javascript
jQuery验证插件validate使用方法详解
2020/09/13 Javascript
jquery树形菜单效果的简单实例
2016/06/06 Javascript
Bootstrap如何创建表单
2016/10/21 Javascript
Nodejs 搭建简单的Web服务器详解及实例
2016/11/30 NodeJs
JS点击图片弹出文件选择框并覆盖原图功能的实现代码
2017/08/25 Javascript
JS+canvas动态绘制饼图的方法示例
2017/09/12 Javascript
手机注册发送验证码倒计时的简单实例
2017/11/15 Javascript
node.js中TCP Socket多进程间的消息推送示例详解
2018/07/10 Javascript
bootstrap模态框弹出和隐藏,动态改变中间内容的实例
2018/08/10 Javascript
js canvas实现红包照片效果
2018/08/21 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
2018/12/10 Javascript
解决cordova+vue 项目打包成APK应用遇到的问题
2019/05/10 Javascript
JavaScript模块管理的简单实现方式详解
2019/06/15 Javascript
node.js express框架实现文件上传与下载功能实例详解
2019/10/15 Javascript
[03:06]V社市场总监Dota2项目负责人Erik专访:希望更多中国玩家加入DOTA2
2014/07/11 DOTA
[02:25]专访DOTA2负责人Erik 国际邀请赛暂不会离开西雅
2014/07/21 DOTA
Python实现对excel文件列表值进行统计的方法
2015/07/25 Python
python实现发送邮件功能
2017/07/22 Python
Opencv+Python实现图像运动模糊和高斯模糊的示例
2019/04/11 Python
python的mysql数据库建立表与插入数据操作示例
2019/09/30 Python
使用python-Jenkins批量创建及修改jobs操作
2020/05/12 Python
精彩广告词大全
2014/03/19 职场文书
2014年公务员个人工作总结
2014/11/22 职场文书
起诉意见书范文
2015/05/19 职场文书
直播实况, OMG破敌三路五十分钟大战神技局摩托车
2022/04/01 DOTA
MySQL中的全表扫描和索引树扫描
2022/05/15 MySQL