Discuz插件开发中的困惑
来源:互联网 发布:软件编写入门 编辑:程序博客网 时间:2024/06/10 17:46
1、关于缓存
这几天一直纠结于Discuz的缓存问题,今天终于有点小发现:首先Discuz的缓存可以通过数据库、文件等方式进行!在Discuz的配置文件config_global.php中有一个配置项, $_config['cache']['type'] = 'sql';就我目前的理解,type为sql时是缓存在数据库中的表名称为common_syscache的表中。以二进制的方式存储的!当type类型为file的时候,Discuz的缓存会存放在Discuz的data/cache目录下。当然Discuz还支持mamcache、redis等方式的缓存
2、关于钩子
钩子其实就是一个以Discuz中某个位置的名称命名的函数,这些位置的名称可以通过将配置文件中的$_config['plugindeveloper'] = 2;来看到!这些钩子会在这些位置出现的时候被调用,然后将对应的钩子的内容显示在相应的位置。
3、关于插件中的语言的问题
因为刚学习Discuz的插件开发,为了快速上手,所有找了在本地安装了两个Discuz的插件,然后想着学习一下别人是怎样开发插件的!但是,看源代码的时候,插件中的那些数据缓存的操作让我彻底晕了,被人的插件是通过调用缓存的方式来读取语言的,而官方的文档说的是通过lang()获取语言包中的内容!经过几次尝试,最后得出一个小结论:Discuz会缓存插件目录下的xml配置文件中的内容(可能需要用方法loadcache()缓存一下),之后便可以通过缓存来读取XML文件中的内容!但是Discuz不会缓存identifier.lang.php中的内容(至少目前我还没有找到),所有对于存放于语言包函数中的内容需要通过lang()方法调用!在导出XML文件的时候发现,XML文件中包含了语言包中的内容!将导出的XML文件放在插件根目录下面,即使将语言包文件删掉,依旧可以正常的通过lang()方法获取相应的内容,同事也可以通过缓存的方式获取!所以,我最后得出的结论是,如果想使用缓存的方式调用语言包,应该讲语言包中的内容写在XML文件中!
4、Discuz插件开发中常用到的几个函数
脚本中用到的
loadcache()
//缓存插件的相关内容
$_G
[
'cache'
][
'plugin'
][
'idetifier'
]
//获取当前插件相关的缓存内容
include
template(
'identifier:templage_name'
);
//加载模板文件
模板中用到的几个函数
<!--{loop $result_courent $value}-->
<!--{$value[tid]}-->
循环数组输出
<!--{/loop}-->
<
br
><
br
>{template common/header} 包含Discuz的头部<
br
>{template common/footer} 尾部<
br
><
br
>
<!--{$test}-->
变量的输出
脚本指定模板变量内容的方式:Discuz的模板可以直接用输出脚本中的变量,脚本中无需做特殊的指定即可!
- Discuz插件开发中的困惑
- Discuz! 插件开发手册
- discuz 插件开发
- discuz!7.1插件开发手册
- DISCUZ 插件管理中心页面开发
- Discuz! 插件开发实例讲解
- Discuz X3插件开发基础教程
- discuz幻灯片插件开发-01
- 如何开发Discuz插件(一)
- Discuz! 插件开发实例讲解
- 如何开发Discuz插件(二):文库插件
- discuz论坛插件开发小教程
- Discuz - 新插件核心开发说明文档
- 深入理解面向discuz的插件开发
- discuz 插件开发 添加计划任务
- discuz 插件 admin后台页面开发
- Discuz X3.2插件开发(一)
- Discuz X3.2插件开发(二)
- js删除特定节点
- 状态码502和504分析
- AngularJS学习
- SQL语句(实用篇)
- WebDriverException: Message: 'IEDriverServer.exe' executable needs to be in PATH. Please download fr
- Discuz插件开发中的困惑
- Web服务器
- 算法与设计分析作业2(动态规划)
- iOS 工作之余小总结(四)--(2)可变与不可变数组
- echarts 柱状图 固定柱宽 最大宽度
- shell 脚本之文本处理
- Javamail发送邮件
- DB2数据库创建用户及授权(解决C#程序进行select、insert等操作无权限问题)
- 解释为什么Spring 默认会加载/WEB-INF/applicationContext.xml