Xiuno BBS 4.0 插件开发入门篇 文档教程

axiuno 2016-9-6

首先我们需要了解下 Xiuno BBS 4.0 的文件结构:

conf/ 配置文件目录
lang/ 语言包
log/ 日志目录
tmp/ 临时目录
model/ 数据调用(重用度高)
route/ 业务逻辑(重用度低)
plugin/ 插件目录
upload/ 上传文件
view/ 模板、静态资源(js, css, htm, font)
xiunophp/ 公共的函数库
admin/ 后台管理
index.php 入口程序

我们重点关注:plugin, model, view, route 这几个目录。


Xiuno BBS 的插件是基于 AOP 机制,所谓的面向切面编程,也就是往代码里插入代码,合并后再执行(最后合并后的代码存放于 tmp 目录下),一个插件一个目录,我们来示范一下最简单的 Hello, Plugin!


1. 打开 index.php,修改 DEBUG 为 2 (这样可以及时看到效果,上线后还原为 0)

!defined('DEBUG') AND define('DEBUG', 2);


2. 新建一个目录:

plugin/my_hello


3. 新建 plugin/my_hello/hook 目录和 plugin/my_hello/hook/body_start.htm 文件,里面写上:

<h1>Hello, Plugin</h1>


4. 写一个配置文件 plugin/my_hello/conf.json

{
	"name":"我的第一个 Xiuno BBS 插件",
	"brief":"我的插件介绍。",
	"version":"1.0",
	"bbs_version":"4.0",
	"installed":1,
	"enable":1,
	"hooks_rank":[],
	"overwrites_rank":[],
	"dependencies":[]
}


5. 为插件制作一个图标,宽 54 像素,高 54像素,我们这里拷贝一个 plugin/xn_ad/icon.png


6. 访问前台,看看效果吧!


Xiuno BBS 预埋了很多 hook,你可以通过打开源代码查找你想插入的地方,比如 view/htm/header.inc.htm 中:

你想 hook 到某点,新建同名文件到你的插件 hook 目录下即可。


是不是很简单?

最新回复 (9)
  • shvv 2016-9-6
    引用 2
    初步有点感觉  了
  • @@@艾力 2016-9-6
    引用 3
    如果是新建一个页面,让用户能在前台访问呢
  • 站长管理员 2016-9-7
    引用 4
    确实不错。
  • axiuno 2016-9-9
    引用 5

    如果要“新建一个页面”,希望这样能访问:比如 http://www.xxx.com/?company.htm


    1.新建文件:plugin/my_hello/hook/index_route_case_end.php

    case 'company': include _include(APP_PATH.'plugin/my_hello/route/company.php'); break;


    2. 新建文件:plugin/my_hello/route/company.php

    <?php
    !defined('DEBUG') AND exit('Access Denied.');
    
    include APP_PATH.'plugin/my_hello/view/company.htm';
    
    ?>


    3. 新建文件:plugin/my_hello/view/company.htm

    <?php include _include(APP_PATH.'view/htm/header.inc.htm');?>
    
    <h1> Hello, World! </h1>
    
    <?php include _include(APP_PATH.'view/htm/footer.inc.htm');?>


  • sunjix5852 2016-9-10
    引用 6
    这种方式会不会影响后续升级????????
  • axiuno 2016-9-24
    引用 7
    这种方式会不会影响后续升级????????
    这种方式不会影响后续升级
  • qq289988157 2016-9-27
    引用 8
    这种方式不会影响后续升级
    这种东西回不回影响后台升级
  • 黑色寓言 10月前
    引用 9
    插件审核要多长时间?
  • 黑色寓言 10月前
    引用 10
    axiuno 如果要“新建一个页面”,希望这样能访问:比如 http://www.xxx.com/?company.htm1.新建文件:plugin/my_hello/hook/index_route_case_e ...
    审核标准是什么?
返回
HTTP/1.1 502 Bad Gateway Content-Type: text/html Connection: close Content-Length: 303 Date: Sat, 20 Jan 2018 19:59:35 GMT X-Via: 1.1 host.localdomain (random:420538 Fikker/Webcache/3.7.4) 502 Bad Gateway

502 Bad Gateway - Cann't Connect To Upstream Server By SSL Read

Server: host.localdomain
Date: 2018-01-20 19:59:35

Fikker/Webcache/3.7.4