易游网-易游模拟器

 找回密码
 立即注册
查看: 2706|回复: 0

[php] Discuz模板开发学习笔记 20210221

[复制链接]

1412

主题

1669

帖子

1万

积分

管理员

夏墨独周

Rank: 9Rank: 9Rank: 9

积分
10094

论坛元老技术达人

QQ
发表于 2021-2-21 10:45:29 | 显示全部楼层 |阅读模式
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标签
<!--[diy=diy1]-->
<!--[/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[setting][jspath]}模板里面取js路径
{lang password}语言包密码

9、模板里diy标签
<!--[diy=yqljdiy]-->
xxx
<!--[/diy]-->

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[uid]}
{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拖动效果)
<!--[diy=div的id值]-->
<div id="div的id值" class = "area" />
<!--[/diy]-->

来源:易游模拟器(QQ:207621422),转载请注明出处!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|易游网-易游模拟器 Copyright @2015-2021 ( 浙ICP备15028007号-1 )

GMT+8, 2024-11-27 09:45 , Processed in 0.027257 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表