您的位置:首页 > 其它

Discuz插件开发中的困惑

2016-12-27 19:57 148 查看
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插件开发中常用到的几个函数

 脚本中用到的

 模板中用到的几个函数

 脚本指定模板变量内容的方式:Discuz的模板可以直接用输出脚本中的变量,脚本中无需做特殊的指定即可!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: