discuz的插件使用

插件的建立和配置

discuz在不一樣版本中獲取url參數
2.0 $_G['gp_uid']php

2.5 $_GET['uid']html

插件都能實現那些功能?
用戶功能:
 頁面顯示嵌入點
 前臺功能入口
 菜單選項模塊前端

管理功能:
 後臺管理功能入口數組

數據功能:
 論壇主題數據處理模瀏覽器

插件開發三種狀態
文件
/config/config_global.php
變量
$_config['plugindeveler'] = 狀態
狀態
NULL:不開啓插件開發模式,不開啓嵌入點
1:開啓插件開發默認,不開啓嵌入點
2:開啓插件開發模式,開啓嵌入點ui

如何設計一個新插件
後臺-》應用-》插件-》設計新插件-》新增一個插件url

自定義模塊
後臺-》應用-》插件-》選擇插件-》模塊(新增一個插件的模塊)
自定義變量
選定插件-》設計-》變量 ,按狀況操做後,會出現左側樹形菜單中spa

嵌入點類型
一、頁面嵌入點
 做用:修改頁面顯示
   頁面嵌入點分爲三種類型
   一、全局頁面嵌入點(通常以global做爲前綴,出如今公共模板上)
   運行位置:公共模板頁面
   二、普通頁面嵌入點(通常以模塊名做爲前綴,例如:forum,出如今模塊頁面上)
   運行位置:普通模塊模板頁面
   三、輸出前置頁面嵌入點
   運行位置:模塊與模板間,處理數據
   
   插件

頁面嵌入點類的命名規則
全局頁面嵌入點類(必須)
   class plugin_插件標識符{}
普通嵌入點類
   class plugin_插件標識符_入口文件名{}
   (例如:forum.php?mod=viewthread&tid=1)debug

頁面嵌入點方法命名規則
全局頁面嵌入點方法
   function global_任意(){}

輸出前置頁面嵌入點方法(模塊名就是mod後面的參數)
   function 模塊名_任意_output(){}

普通頁面嵌入點方法
   function 模塊名_任意(){}

二、信息提示嵌入點
 做用:修改showmessage()

三、廣告嵌入點
 做用:處理廣告位數據

四、功能嵌入點
 做用:處理主題,帖子,頭像數據等

案例:建立一個頁面插件類
後臺-》應用-》插件-》模塊-》模塊類型選擇【頁面嵌入-普通版】-》xxx.class.php
進入插件的目錄新建一個xxx.class.php文件

<?php

//全局嵌入點類(plugin_標識符)
class plugin_ppctest{
    //全局頁面嵌入點方法,必須寫在全局嵌入點類裏面,方法與嵌入點取名相同便可
    function global_cpnav_extra1(){
        //include template('ppctest:forum/ppctest');
        return 'hello world!!!';
    }
}

//普通嵌入點類(plugin_標識符_文件名),必須繼承全局嵌入點類
//例如:forum.php?mod=viewthread&tid=1,文件名就是forum
class plugin_ppctest_forum extends plugin_ppctest{
    //前置頁面嵌入點,會在頁面的最前面輸出出來
    //在<html>以前,因此前置頁面嵌入點方法通常作數據處理使用
    function index_sayhi_output(){
        //通常作數據處理
        global $_G;

        $_G['member']['username'] = 'hehe';
    }
    //普通嵌入點方法取名,模塊名打頭,後面任意
    //function 模塊名_任意(){}
    //例以下面的index模塊的status_extra方法
    function index_status_extra(){
        return 'baidu';
    }
}

頁面嵌入點的兩種返回值類型
字符串類型
 示例:[string global_login_extra]
 做用:普通數據顯示

數組類型:列表數據顯示(後面的那個/0是數組的索引值)
 示例:[array forumdisplay_thread_subject/0]
 做用:列表數據顯示

插件模板的定義規則
用法:
 include template(插件標識符:模塊目錄名/模塊名稱)
示例:
 include template('ppctest:forum/baidu');

對應

插件目錄/ppctest/template/forum/baidu.htm

注意:
在上面插件模板中,3.2的版本,直接在方法中include template能夠輸出至前端頁面了,而這以前的版本,須要配合{block}標籤,在include 進來的模板頁面使用html代碼,而後return $變量名出去,到前端使用

圖片描述

公共嵌入點
方法名:
 common()
聲明位置:
 公共嵌入點類
調用位置:
 全部嵌入點
參數使用:
 無

//全局嵌入點類(plugin_標識符)
class plugin_ppctest{
    //聲明公共嵌入點,在全部方法執行以前執行,能夠作一些常量,變量的處理
    function common(){
        global $_G;

        $_G['zhencheng'] = 'hello wolrd!!!';
    }
}

class plugin_ppctest_forum extends plugin_ppctest{

    function index_status_extra(){
        global $_G;//聲明全局變量,爲方便使用common方法裏的定義的變量
        return $_G['zhencheng'].'-baidu';
    }

}

信息嵌入點使用
方法名:
 模塊名_任意名稱_message()
聲明位置:
 腳本嵌入點類
調用位置:
 當前腳本提示用戶信息時
參數使用:
 方法參數

//例如,在forum.php文件中加入以下一段代碼
showmessage('info:這是一段提示信息','index.php');

//在嵌入類中寫入以下代碼
class plugin_ppctest_forum extends plugin_ppctest{

    function index_test_message($p){
     debug($p);
    }
}
瀏覽器瀏覽forum.php就出現以下效果,說明能夠自定義一些message的效果
Array
(
    [param] => Array
        (
            [0] => info:這是一段提示信息
            [1] => index.php
            [2] => Array
                (
                )

            [3] => Array
                (
                )

            [4] => 0
        )
)

廣告嵌入點使用
方法名:
 ad_廣告嵌入點名稱()
聲明位置:
 全局嵌入點類,腳本嵌入點類
調用位置:
 對應的廣告位
參數使用:
 方法參數

//下面用全局嵌入點類說明
//全局嵌入點類(plugin_標識符)
class plugin_ppctest{
        //方法ad_headerbanner經過開啓插件配置選項查詢到的
    function ad_headerbanner(){
        return '<a href="www.baidu.com">baidu</a>';
    }

文本解析嵌入點使用
方法名:
 discuzcode()
聲明位置:
 全局嵌入點類
調用位置:
 主題文本解析時
參數使用:
 $_G['discuzcodemessage'],方法參數

//全局嵌入點類(plugin_標識符)
class plugin_ppctest{
    function discuzcode(){
        global $_G;
                //下面代碼將會在每一個帖子後面加上」————zhencheng「
        $_G['discuzmessage'].='————zhencheng';
    }
}

主題刪除嵌入點使用 方法名:  deletethread() 聲明位置:  全局嵌入點類 調用位置:  主題被刪除前,後時 參數使用:  $_G['deletethreadtids'],方法參數

相關文章
相關標籤/搜索