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插件开发中的困惑的更多相关文章

  1. discuz插件开发

    首先请修改global里的配载文件$_config['plugindeveloper'] = 2; 然后应用中心,点击设计插件 模块选择管理中心即可在应用里面显示链接 开发资料参考:http://fa ...

  2. PHP通用的XSS攻击过滤函数,Discuz系统中 防止XSS漏洞攻击,过滤HTML危险标签属性的PHP函数

    XSS攻击在最近很是流行,往往在某段代码里一不小心就会被人放上XSS攻击的代码,看到国外有人写上了函数,咱也偷偷懒,悄悄的贴上来... 原文如下: The goal of this function ...

  3. Eclipse插件开发中对于Jar包和类文件引用的处理(彻底解决插件开发中的NoClassDefFoundError问题)(转)

    目的:Eclipse插件开发中,经常要引用第三方包或者是引用其他插件中的类,由于插件开发环境引用类路径的设置和运行平台引用类路径的设置不同,经常导致开发过程OK,一旦运行则出现NoClassDefFo ...

  4. Eclipse插件开发中的选择监听机制(Selection Provider-Listener)

    Eclipse插件开发中的选择监听机制(Selection Provider-Listener) 监听机制是eclipse插件开发或rcp应用开发中经常使用的技术,比方点击TableViewer或Tr ...

  5. ArcMap Add-in插件开发中解决VS调试时断点不会命中的问题

    在VS2010中进行ArcMap Add-in插件开发(ArcEngine10.1,ArcGIS10.1),运行时为.NET4.0,在程序中设置了断点进行调试,但是运行后程序并不会在断点处停止,且原来 ...

  6. discuz插件开发新手入门 超详细

    作为一个新手,目前也是刚刚玩转discuz的插件功能,好东西不敢独享,就拿出来大家一起分享入门的过程.现在网上很多关于discuz的插件教程都是很简单的教程,原因可能是这个东西是商业化的东西,本着分享 ...

  7. Discuz!NT中的Redis架构设计

    在之前的Discuz!NT缓存的架构方案中,曾说过Discuz!NT采用了两级缓存方式,即本地缓存+memcached方式.在近半年多的实际运行环境下,该方案经受住了检验.现在为了提供多样式的解决方案 ...

  8. Discuz!NT中集成Memcached分布式缓存

    大约在两年前我写过一篇关于Discuz!NT缓存架构的文章,在那篇文章的结尾介绍了在IIS中如果开启多个应用程序池会造成多个缓存实例之间数据同步的问题.虽然给出了一个解决方案,但无形中却把压力转移到了 ...

  9. discuz 插件开发 新手入门

    作为一个新手,目前也是刚刚玩转discuz的插件功能,好东西不敢独享,就拿出来大家一起分享入门的过程.现在网上很多关于discuz的插件教程都是很简单的教程,原因可能是这个东西是商业化的东西,本着分享 ...

随机推荐

  1. 采购信息记录修改[BDC]

    *&---------------------------------------------------------------------* *& *&---------- ...

  2. JAVA集合类汇总

    一.集合与数组 数组(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用. 集合(只能存储对象,对象类型可以不一样)的长度可变,可在多数情况下使用. ...

  3. 用PHP解析类JSON字符串为数组的实现

    题目:把字符串嵌套关系转换成数组,字符串只包含成对中括号.数字和逗号字符串:(1,(1,2,(1,(1,2,(1)),3)),3,(1,(1,2,((1((1,(1,2,(1,2,3),4,5),3) ...

  4. JS学习笔记--仿手机发送内容交互

    学习JS笔记----记录上课中学习的知识点,分享下老师教的内容: 1.html内容 <div id="box"> <div id="message&qu ...

  5. Java开发工具安装步骤内容如下

    Java开发工具安装步骤内容如下 安装 开发工具 STS 链接下载网址 eclipse 链接下载网址 JDK安装 jdk链接下载地址 Marven环境 marven链接下载地址 Tomcat tomc ...

  6. oracle常用系统表

    转自:http://blog.chinaunix.net/uid-200142-id-3479306.html dba_开头..... dba_users      数据库用户信息 dba_segme ...

  7. Web前端开发规范手册

    一.规范目的 1.1  概述 为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档. 本规范文档一经确认, 前端开发人员必须按本文档规范进行前台页面开发.  ...

  8. Fibonacci(斐波那契)递归实现。容易看懂

    #include<iostream>using namespace std;int fibonacci(int n){if(n<=0) return 0; else if(n==1) ...

  9. sh back mongo

    !/bin/shBACK_DB=ALLOUT_DIR=/home/jianyeruan/app/mongo #临时备份目录TAR_DIR=/home/jianyeruan/app/mongotar # ...

  10. 制造行业流程管理的“IPO”思维

    流程管理是企业从流程角度出发,关注流程是否增值的一套管理体系.从认识流程.到建立流程.到管理流程.再到优化流程,企业管理人员要去除不增值和低价值的流程,减少员工犯错误的机会,建立一套卓越的流程体系. ...