Discuz模板开发学习笔记 20210221
1、在discuz模板文件里执行一段php脚本{eval var_dump($_G['style'])}
style是个数组,就存模板xml里一些配置。
2、discuz模板语法和标签
引入模板
<!--{subtemplate common/header}-->
subtemplate加载模板不会报错
template加载模板会报错
逻辑判断
<!--{if empty($gid) && $announcements}-->
<!--{/if}-->
钩子标签,输出相应代码
<!--{hook/index_status_extra}-->
广告标签
<!--{ad/text/wp a_t}-->
diy标签
<!---->
<!---->
循环标签相当于php foreach
<!--{loop 数组 $data}-->
执行一段php代码
<!--{eval $forumscount = count($forum_favlist);}-->
语言包
{lang username}
3、模板里面的css可以不用link
extend_common.css命名为这个,discuz引擎会自动先加载这个css
然后再加载common.css样式
和加载模板一样,先找我们自己定义的模板htm文件,如果没有再到default中找模板htm
common.css和module.css都有这个特性,加个extend_前缀
4、css中是用标签
{STYLEIMGDIR}
前台模板里相应的是$_G['style']['styleimgdir']
5、判断当前模块
<!--{if CURMODULE != 'logging'}-->
6、引入模板
<!--{template member/login_simple}-->
7、discuz把css都缓存了,如果你添加了css或者修改了
要更新缓存才会生效,不缓存js
8、{$_G}模板里面取js路径
{lang password}语言包密码
9、模板里diy标签
<!---->
xxx
<!---->
10、discuz = 程序+数据库
安全搭建disczu,一定要新建mysql用户,不要用root
权限太大,一旦发生注入很危险,而且要建一个专门给discuz用的
数据库,这个用户只能操作该数据库,安装discuz时,数据库表前缀要改掉,防止
注入发生时猜解。admin.php名字也要改掉。
11、css样式有个最近优先原则,会发生覆盖
css外联样式,下面的演示会覆盖上面的样式内容,同名的
common.css//控制公共样式
module.css//控制模块样式
discuz自定义模板里的,common目录下是放的extend_common.css
和extend_module.css,扩展附加,discuz会将扩展css拼接到原始的css之后,会覆盖之前的。
discuz就是利用了css的就近加载原则。
12、discuz一律采用附加的方式修改样式
extend_module.css中要指定具体模块
/** 入口文件名::url中mod值,mod1**/
/**end**/
data/template/下面是discuz模板缓存,目录需要可写
forum.php?mod=displayforum
这个对应的模板文件forum/displayforum.htm
forum.php?mod=space&do=pm
这个对应的模板文件forum/space_pm.htm
13、子模版加载标签
{template 子模版目录/子模版文件名}
{subtemplate 子模版目录/子模版文件名}
都支持不同模板调用和,ajax调用
subtemplate会把主模板和子模版编译到一起
14、变量输出标签
{$变量名}或$变量名
$_G['uid']
$_G['username']
常量输出标签
{常量名}
{TIMESTAMP}//从1970年1月1号到当前时间的秒数
{DISCUZ_ROOT}//这个是discuz根目录路径
15、万能输出标签echo 可以输出函数的返回值
{echo $_G}
{echo 'phpchina'}
{echo authcode('phpchina','ENCODE','haoran')};
authcode加密出来的授权码是随机的
16、单行代码标签,执行任意单行php代码
{eval 任意php代码}
执行任意多行php代码
{eval}
php1;
php2;
{/eval}
17、输出头像标签,输出指定用户id的头像,支持大中小三种尺寸
{avatar(用户id, 'big')}//medium,small,这个标签是通过ucenter接口实现的
返回的是一个img标签
18、循环数组标签
{loop $数组名 $索引 $值}{/loop}
{loop $数组名 $值}{/loop}
19、php里一般存储一个时间戳,方便时区转换echo time();
时间输出标签
{data(时间戳)}
{data(TIMESTAMP)}
20、广告调用标签
{ad/广告标识符}
21、数据调用标签(模块调用是有缓存的)
{block/3}
diy实际上上拖拽加block实现的
22、<ol>在discuz中已经给你定制了样式,有序列表,有序号
<ul>无序列表则没有
23、变量拼接标签
拼接php和html混编代码到指定变量
{block 变量名}混编代码{/block}
24、钩子调用标签(结合插件系统,输出插件指定嵌入点的返回值)
{hook/模块名称_自定义名称}
25、输出换行标签(在模板中输出类Unix换行符)
{LF}主要用在discuz的邮件模块上
26、diy调用标签(创建diy数据调用容器,实现diy拖动效果)
<!---->
<div id="div的id值" class = "area" />
<!---->
页:
[1]