5.1 Discuz! X5.0:云插件

概述

Discuz! X5.0 与 WitFrame 云平台进行结合,增加了云插件。通过云插件中,您不仅可以不必担心代码泄露的风险,而且可以通过 RESTful API 接口完全调用 Discuz! 的所有内容。

开发

云插件是基于 WitFrame 云平台进行的开发,因此您需要首先了解 WitFrame 应用的开发方法,请详细阅读 WitFrame 开发文档

要开发适配 Discuz! X5.0 的云插件您需要在您开发的 WitFrame 应用中添加 /controllers/Discuz 目录,然后添加 Config.php 返回配置信息的接口文件

<?php

class Discuz_ConfigController extends ApiController {

    const Config = array(
        array(
            'type' => 'page',
            'name' => '测试页面',
            'page' => 'discuz_page1',
        ),
        array(
            'type' => 'diy',
            'name' => '测试DIY',
            'page' => 'discuz_page1',
        ),
    );

    public function indexAction() {
        return $this->successMessage('', self::Config);
    }

}
  • type: 当前云插件包含的入口类型,page 为页面类型,diy 为 DIY 类型
  • name: 入口名称
  • page: 页面地址,如上例中,云插件入口的实际地址为 “index.php?index=witframe&path=Sample/v1/discuz_page1”

针对 discuz_page1 我们添加 Page1.php 文件,注意首字母大写

<?php

class Discuz_Page1Controller extends ApiController {

    public function indexAction() {
        try {
            $v = Lib\Site::Discuz_Restful('/profile');
        } catch (Exception $e) {
            echo $e->getMessage();
        }

        echo '当前用户 '.$v['data']['user']['username'];
        $url = Common::getAPIURI('/Sample/v1/discuz_page1');
        echo '<a href="'.$url.'?'.time().'">'.$url.'</a>';
    }

}

此例中我们的云插件通过 RESTful API 接口 “Lib\Site::Discuz_Restful” 直接调用了当前用户的身份信息,如果您在 Discuz! 有自己设计的 API 接口,也可以调用到。

友情提示:如果您的云插件需要使用 Discuz_Restful 接口,那么开发中的网站以及今后站长的站点必须拥有公网 IP,否则 WitFrame 无法访问到接口数据。

使用

开发的云插件在 WitFrame 市场提审、上线后,站长第一次访问“插件管理”的“云插件”入口时会自动注册站点,然后在“应用市场”购买应用。应用启用后,在 Discuz! 的插件管理,可以直接看到您开发的云插件。


整理自 Discuz! 官方开放平台技术文档(open.dismall.com),由 WorkBuddy 整理发布。