插件就是为了满足个性化需求按照HDWiki插件开发规范编写的可插拔程序,虽然可以直接对HDWiki进行二次开发实现插件同样的功能,但是这样做势必影响到系统的升级和稳定性。

采用插件的方式,可以随时进行停用和卸载,而且对系统毫无影响。

插件类型

插件按照是否需要在前台显示,可以分为两类:前台展示类插件和非前台展示类插件。
    插件举例:
    1、百科联盟插件:只需要系统具有联盟同步和导入数据的功能,不需要在前台产生单独的频道,所以是非前台展示类插件。
    2、互动摸摸插件:只需要后台管理,也是非前台展示类插件。
    3、许愿墙插件:需要在前台展示内容,所以是前台展示类插件。
    4、UCenter插件:非前台展示类插件。
    目前的大部分插件都是非前台展示类。
插件开发规范      

注意,我们这里设定插件的唯一标识符为myplugin 。
1、myplugin应该放在 plugins 目录下面。
2、myplugin是采用MVC的开发模式。
3、myplugin包含有3个子目录 :control、model、view
4、myplugin子目录model下面必须有一个文件叫做:myplugin.class.php
5、myplugin.class.php 这个文件的内容如下:

!defined('IN_HDWIKI') && exit('Access Denied');

class mypluginmodel {

var $db;
    var $base;

function mypluginmodel(&$base) {
        $this->base = $base;
        $this->db = $base->db;
    }
    
    function install(){
        $plugin=array(
            'name'=>'我的插件',                //插件的名称
            'identifier'=>'myplugin',            //插件的唯一标识符
            'description'=>'这个插件是用来测试的',        //插件的描述
            'datatables'=>'',            //插件用到的数据库表,多个表用逗号分隔
            'type'=>'0',                     //插件的类型,1为前台展示型,0为非前台展示型
            'copyright'=>'lovewiki',         //插件的作者
            'homepage'=>'http://kaiyuan.hudong.com',  //插件的官方网址
            'version'=>'1.0',           //插件的版本号
            'suit'=>'4.0.4',               //适合运行的HDWiki版本号
            'modules'=>''                 //卸载需要填写的信息,暂时可以不填写任何东西
        );
        $plugin['vars']=array();
        $plugin['hooks']=array();
        return $plugin;
    }

function uninstall(){
    
    }
}

?>
6、myplugin子目录control下面必须有一个文件叫做:admin_myplugin.php
7、admin_myplugin.php 这个文件的内容如下:

!defined('IN_HDWIKI') && exit('Access Denied');
 
class control extends base{

function control(& $get,& $post){
        $this->base( & $get,& $post);
        $this->load('plugin');
        $this->loadplugin('myplugin');
        $this->view->setlang('zh','back');
    }

function dodefault() {
        echo 'nothing!';
    }

}

?>

插件开发步骤

1、明确自己需要的功能,先认真看清楚HDWiki是否已经包含。
2、给插件想好名称(中英文都可)。给插件想好唯一标识符,也就是英文名称,这个非常重要。
3、把插件开发向导 pluginwizard.php 这个工具放到HDWiki的根目录下面。
4、假定你的HDWiki网址为:http://www.mydomain.com,在浏览器打开地址 
     http://www.mydomain.com/pluginwizard.php,然后按照提示,填入相关的信息,最后点击生成即可。
5、到后台HDWiki插件下,点击全部推荐插件,即可看到插件列表,这个时候只需要点击按钮“安装此插件”即可完成插件的安装。
6、至此,插件的开发和调试环境已经完成,我们只需要增加相应的方法和模板文件即可完成插件的编写。
7、插件开发完毕后,我们进入已安装插件列表,点击“分享”即可把我们的插件发布到HDWiki官方网站,从而完成插件的共享和传播。

开发实例

HDWiki许愿墙插件开发实例---一步一步跟我学! (http://kaiyuan.hudong.com/bbs/viewthread.php?tid=6138&highlight=%E6%8F%92%E4%BB%B6%2Blovewiki)

hdwiki中插件开发指南的更多相关文章

  1. Elasticsearch5.5.1插件开发指南

    Elasticsearch5.5.1插件开发指南 原文地址: https://www.elastic.co/guide/en/elasticsearch/plugins/5.5/plugin-auth ...

  2. Android中插件开发篇之----动态加载Activity(免安装运行程序)

    一.前言 又到周末了,时间过的很快,今天我们来看一下Android中插件开发篇的最后一篇文章的内容:动态加载Activity(免安装运行程序),在上一篇文章中说道了,如何动态加载资源(应用换肤原理解析 ...

  3. JVM中优化指南

    JVM中优化指南 如何将新对象预留在年轻代 如何让大对象进入年老代 如何设置对象进入年老代的年龄 稳定的 Java 堆 VS 动荡的 Java 堆 增大吞吐量提升系统性能 尝试使用大的内存分页 使用非 ...

  4. Android中插件开发篇总结和概述

    刚刚终于写完了插件开发的最后一篇文章,下面就来总结一下,关于Android中插件篇从去年的11月份就开始规划了,主要从三个方面去解读Android中插件开发原理.说白了,插件开发的原理就是:动态加载技 ...

  5. 开源遥感平台opticks插件开发指南

    Opticks是一款开源的遥感数据处理平台,与其同类开源软件OSSIM一样,支持种类丰富的数据文件格式,但其最大特点为设计精巧的插件开发模式,在设计技巧上,系统提供了良好的封装特性,即使插件开发者对框 ...

  6. Android中插件开发篇之----应用换肤原理解析

    一.前言 今天又到周末了,感觉时间过的很快呀.又要写blog了.那么今天就来看看应用的换肤原理解析.在之前的一篇博客中我说道了Android中的插件开发篇的基础:类加载器的相关知识.没看过的同学可以转 ...

  7. Android中插件开发篇之----类加载器

    关于插件,已经在各大平台上出现过很多,eclipse插件.chrome插件.3dmax插件,所有这些插件大概都为了在一个主程序中实现比较通用的功能,把业务相关或者让可以让用户自定义扩展的功能不附加在主 ...

  8. hdwiki中模板的使用说明

    HDwiki所有模版文件都在根目录view下的default文件里,以admin_开头的是后台的模版文件,其它不是以admin_开头的,就是所有的前台文件.具体列表如下:首页模版文件:  index. ...

  9. hdwiki中model模块的应用

    control中调用model原则是这样的,如果你的这个model在本control中大部分方法中都要用到,那么,就写在构造函数里面.例如,名字为doc的control的构造函数如下: functio ...

随机推荐

  1. hadoop NameNode 手动HA

    官网配置地址:http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWit ...

  2. 转:CDC,CPaintDC,CClientDC,CWindowDC区别

    http://www.cnblogs.com/songsu/articles/1350014.html

  3. 使用mysql 的docker

    sudo docker run --name phpmyAdmin3 --link some-mysql:mysql -d phpmyadmin/phpmyadmin:latest -p 8080:8 ...

  4. iOS获取运营商的相关信息

    1.导入:CoreTelephony.framework 2.添加头文件 #import <CoreTelephony/CTTelephonyNetworkInfo.h> #import ...

  5. PAT 解题报告 1047. Student List for Course (25)

    1047. Student List for Course (25) Zhejiang University has 40000 students and provides 2500 courses. ...

  6. Java类加载器深入探索

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 什么是.class文件? class文件全名称为Java class文件,主要在平台无关性和网 ...

  7. SQL 简单查询语句 select

    select *from emp;//查询emp表内容

  8. [原创]java WEB学习笔记54:Struts2学习之路--- 编写Struts2 的第一个程序,HelloWord,简述 package ,action,result

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  9. Java里的File I/O

    Java的输入流主要由:InputStream和Reader作为基类,把持久化数据读入内存.输出流由OutputStream和Write类作为父类. 其中读如内存的时候,不可能一下去全读进去,需要一个 ...

  10. .NET 4.0 MemoryCache with SqlChangeMonitor

    Summary There isn't a lot of documentation on the internet about how to use the SqlChangeMonitor wit ...