Discuz插件开发中的困惑
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}-->
{template common/header} 包含Discuz的头部
{template common/footer} 尾部
<!--{$test}--> 变量的输出
脚本指定模板变量内容的方式:Discuz的模板可以直接用输出脚本中的变量,脚本中无需做特殊的指定即可!
Discuz插件开发中的困惑的更多相关文章
- discuz插件开发
首先请修改global里的配载文件$_config['plugindeveloper'] = 2; 然后应用中心,点击设计插件 模块选择管理中心即可在应用里面显示链接 开发资料参考:http://fa ...
- PHP通用的XSS攻击过滤函数,Discuz系统中 防止XSS漏洞攻击,过滤HTML危险标签属性的PHP函数
XSS攻击在最近很是流行,往往在某段代码里一不小心就会被人放上XSS攻击的代码,看到国外有人写上了函数,咱也偷偷懒,悄悄的贴上来... 原文如下: The goal of this function ...
- Eclipse插件开发中对于Jar包和类文件引用的处理(彻底解决插件开发中的NoClassDefFoundError问题)(转)
目的:Eclipse插件开发中,经常要引用第三方包或者是引用其他插件中的类,由于插件开发环境引用类路径的设置和运行平台引用类路径的设置不同,经常导致开发过程OK,一旦运行则出现NoClassDefFo ...
- Eclipse插件开发中的选择监听机制(Selection Provider-Listener)
Eclipse插件开发中的选择监听机制(Selection Provider-Listener) 监听机制是eclipse插件开发或rcp应用开发中经常使用的技术,比方点击TableViewer或Tr ...
- ArcMap Add-in插件开发中解决VS调试时断点不会命中的问题
在VS2010中进行ArcMap Add-in插件开发(ArcEngine10.1,ArcGIS10.1),运行时为.NET4.0,在程序中设置了断点进行调试,但是运行后程序并不会在断点处停止,且原来 ...
- discuz插件开发新手入门 超详细
作为一个新手,目前也是刚刚玩转discuz的插件功能,好东西不敢独享,就拿出来大家一起分享入门的过程.现在网上很多关于discuz的插件教程都是很简单的教程,原因可能是这个东西是商业化的东西,本着分享 ...
- Discuz!NT中的Redis架构设计
在之前的Discuz!NT缓存的架构方案中,曾说过Discuz!NT采用了两级缓存方式,即本地缓存+memcached方式.在近半年多的实际运行环境下,该方案经受住了检验.现在为了提供多样式的解决方案 ...
- Discuz!NT中集成Memcached分布式缓存
大约在两年前我写过一篇关于Discuz!NT缓存架构的文章,在那篇文章的结尾介绍了在IIS中如果开启多个应用程序池会造成多个缓存实例之间数据同步的问题.虽然给出了一个解决方案,但无形中却把压力转移到了 ...
- discuz 插件开发 新手入门
作为一个新手,目前也是刚刚玩转discuz的插件功能,好东西不敢独享,就拿出来大家一起分享入门的过程.现在网上很多关于discuz的插件教程都是很简单的教程,原因可能是这个东西是商业化的东西,本着分享 ...
随机推荐
- ID3、C4.5、CART、RandomForest的原理
决策树意义: 分类决策树模型是表示基于特征对实例进行分类的树形结构.决策树可以转换为一个if_then规则的集合,也可以看作是定义在特征空间划分上的类的条件概率分布. 它着眼于从一组无次序.无规则的样 ...
- html文件里引入文件html文件
导入通用的代码除了使用php外 iframe在很多界面使用起来比较方便 比如说要写导航 在好几个界面都要用这个导航 可以用iframe引用 实例:这个header.html是我写的一个导航界面 在in ...
- 对HTML5校验 自定义验证信息
在HTML5中,表单可以定义一个属性required来触发默认的校验机制,比如: <input type="text" required /> 弹出的错误提示默认为英文 ...
- 【译】Learn ES2015——箭头函数
原文:https://babeljs.io/learn-es2015/ 理解也许有偏差,欢迎指正 箭头函数 不同于函数,箭头函数和包裹它的代码拥有同一个this.如果一个箭头函数在一个function ...
- 关于EM,REM,PX的几点注意
px是绝对单位,不支持IE的缩放,em是相对单位. em指字体高,任意浏览器的默认字体高都是16px.所以未经调整的浏览器都符合: 1em=16px.那么12px=0.75em, 10px=0.625 ...
- 【代码】二进制转BCD [转]
BCD:Binary Coded Decimal 即用4位二进制编码表示1位的十进制数. 定义:BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行. ...
- 【PCB】【项目记录】AWG任意波形产生器
———————————————————————————————————————————————————————————————————— 原理图V1.0 01.top 已完成原理图绘制,但有相当错误, ...
- 关于sysprocesses表各字段的作用
sysprocesses 表中保存关于运行在 Microsoft® SQL Server™ 上的进程的信息.这些进程可以是客户端进程或系统进程.sysprocesses 只存储在 master 数据库 ...
- μC/OS-Ⅲ系统中的任务种类及基本状态
在μC/OS-Ⅲ系统中,任务自身一共有五种状态. 1.休眠态 调用函数OSTaskCreate()创建任务后,任务就可以接受μC/OS-Ⅲ的管理.处于休眠态的任务代码实际上已经写入代码空间中了,但是μ ...
- javap反编译解释外部类直接使用内部类private字段的原理
2016-07-04 15:56:39 我们都知道: 1.内部类可以直接访问外部类的private字段和方法: 2.非静态内部类持有外部类的引用: 3.外部类可以直接访问内部类的private字段和方 ...