Discuz!登陸、退出、個人信息修改提交彈出層實現 by cubeking

站長們在運營的同時,可能會想要根據自己具體的需求來修改、製作一些特殊功能,但是苦於不懂技術,四處求助,看完下面的教程,希望大家能從中獲取到一些基本技能,在小修小改時候能祝您一臂之力!

Discuz!系統常用函數及變量:

常用函數:

showmessage()函數
:該函數就是我們最常見的頁面提示跳轉,比如登陸、退出、個人信息修改提交等等。

效果演示:

1.jpg

函數原型
  1. showmessage($message, $url_forward = '', $extra = '', $forwardtype = 0)
複製代碼
函數解釋:在我們Discuz!的php文件中,可以通過這個函數還指定跳轉頁面,自定義跳轉時候的提示信息。
其中有四個參數,第一個是必填參數,後三個爲可選參數,可選就是說使用時候可以不用填寫,當然填寫也不會有錯;
第一個參數是跳轉時候的提示信息,比如“您的修改已提交,正在爲您跳轉”;
第二個參數是要跳轉的頁面的url,就是指定他要跳轉到哪個頁面,可以是絕對URL,也可以使相對地址,比如:“index.php”就是跳轉到首頁。
第三個和第四個參數,可選的,對於我們站長來說,基本用不到,可以不用深究。通常使用兩個參數即可。

範例:showmessage('您的修改已提交,正在爲您返回首頁', 'index.php');

sendpm()函數:該函數用於發送短消息(包括私人消息、系統消息、提醒消息等)。

函數原型:
  1. sendpm($toid, $subject, $message, $fromid = '');
複製代碼
函數解釋:同樣在Discuz!的php文件中,我們可以使用該函數發送短消息。
其中有四個參數,前三個爲必填參數,最後一個爲可選參數;
第一個參數是接收短消息的用戶UID;
第二個參數是短消息的標題;
第三個參數是短消息的正文內容;
第四個參數是發送短消息的用戶UID;
需要注意:當第一個參數$toid爲0時,消息類型爲公共消息,$fromid爲0時,消息類型爲系統消息,$message這個消息內容的參數,不支持HTML,但是支持Discuz!代碼。

sendmail函數:該函數用於發送電子郵件,前提是論壇系統的郵件必須配置成功,能正常發送郵件。

函數原型:
  1. sendmail($email_to, $email_subject, $email_message, $email_from = '')
複製代碼
該函數同樣有四個參數,其中前三個爲必填參數,最後一個爲可選參數;
第一個參數是接收電子郵件的用戶郵箱(看準了,是電子郵箱);
第二個參數是電子郵件的標題;
第三個參數是電子郵件的正文內容;
第四個是發送郵件的郵箱;
注意,第四個參數發送郵件的電子郵箱,可選,默認留空則爲系統發送的郵件;
這個發送電子郵件的函數不常用到,可以根據自己特殊需求來製作特殊功能時候使用,比如:N天未登錄郵件喚醒;

$db對象的各個MYSQL功能函數:
這些MYSQL相關函數,對於初級站長來說比較難,因爲涉及php的一些知識,如果不瞭解這些,請慎用;
下面主要說一下最常用的SQL語句執行函數:$db->query($sql);
$db->query($sql),通常只指定一個參數,那就是SQL語句,比如:
  1. $db->query("SELECT * FROM cdb_mytable");
複製代碼
這樣就執行了SELECT * FROM cdb_mytable這條SQL語句。
其他更對相關函數,有一定基礎的站長,可以參考include/db_mysql.class.php這個文件。

模版中使用的常用JS函數:

showPrompt()函數:
函數效果
:就像積分變動提醒一樣那種漂亮的提示橫條,我的Infonitce插件也用到這個函數;

函數範例
  1. <span οnclick="showPrompt(null, null, '哈哈', 2000);">[點擊我看看是什麼效果]</span>
複製代碼
函數解釋:就我們需要的這種功能來說,只需要你關心裏面最後兩個參數,很明顯,“哈哈”這個參數就是提示信息內容,“2000”就是提示信息停留的時間,單位是毫秒!
函數效果演示

2.jpg

showDialog函數:用於彈出提示窗口

函數原型:
  1. showDialog(msg, mode, t, func, cover)
複製代碼
第一個參數:彈出窗口裏面提示信息的內容;
第二個參數:這個窗口的類型,可選值有:info、notice、alert、confirm等;具體區別參照下圖:

3.jpg

4.jpg


第三個參數:是彈出窗口的標題;
第四個參數:是點擊“確定”後執行的函數,非必須,根據自己需要使用函數;
第五個參數:是否帶遮罩層(就是彈出窗口後,背景頁面是否變成暗色不可用),0爲不遮罩,1爲遮罩;

函數範例
  1. <a οnclick="showDialog('你是壞蛋!', 'notice', '通知信息', null, 0)" href="javascript:;">點擊我看看</a>
複製代碼
更多JS常用函數,參考:http://bbs.7dps.com/jstour.php

Discuz!系統全局變量篇:

$discuz_userss:當前用戶的用戶名;
$discuz_uid:當前用戶的UID;
$bbname:論壇名稱;
$boardurl:論壇地址;
$adminid:論壇管理組的數字ID編號,如:1是管理員,2是超版,3是版主;
$version:論壇的版本號;
$groupid:用戶組ID編號;

更多Discuz!系統全局變量參考:http://qun.qq.com/air/#12893286/bbs/view/cd/1/td/2

爲Discuz!添加一個屬於自己的緩存文件:

首先,我們要知道Discuz!封裝的函數writetocache,用來寫入緩存的,在include/cache.func.php文件中定義的。
函數原型:writetocache($script, $cachenames, $cachedata = '', $prefix = 'cache_')

那麼,要寫自己的緩存文件,要用這個函數,首先我們必須調用這個定義函數的文件,如下:
  1. require_once DISCUZ_ROOT.'./include/cache.func.php';
複製代碼
然後就可以直接使用函數,例如:
writetocache($script, $cachenames, $cachedata = '', $prefix = 'cache_')

詳細的writetocache解釋及使用範例(請下載附件): writetocache.rar (871 Bytes, 下載次數: 330)

藉助common.inc.php做任何事情:

Discuz!系統中,include/common.inc.php這個文件,可以理解爲系統的一個通用文件,裏面包含了全局的一些通用信息,可以不必理解它是怎麼寫的,什麼原理,只要學會應用即可,畢竟我們是站長,如果是開發者,可以深究下。
在Discuz!的php文件中,文件開始先包含一下這個文件,如下:
  1. require_once './include/common.inc.php';
複製代碼
然後往下我們就可以使用上面所舉的全局函數和一些變量,直接使用即可。
包含這個文件後,我們可以做很多事情,比如自己寫一個單頁的程序:
  1. <?php
  2. require_once './include/common.inc.php';
  3. include template('intro');
  4. ?>
複製代碼
這樣的話,就是一個單頁了,單頁內容直接在模板文件intro.htm裏寫即可,關於模板裏面的函數,下面教程會講到。

關於單頁的創作教程http://bbs.7drc.com/thread-523-1-1.html

Discuz!系統中的模板函數:

大家肯定都注意到,Discuz!系統的可訪問頁面的php文件底部,一般都會有下面這麼一句:
  1. include template(xxx);
複製代碼
這個就是調用模板文件的一個方法(函數),裏面的參數“xxx”就是模板文件的文件名,比如:intro.htm文件,那就是:
  1. include template(intro);
複製代碼
注意,裏面的參數只填寫模版文件的文件名,不需要填寫模版文件的擴展名(.htm)。

那麼,模板文件放在哪裏呢?可以放在自己當前風格模板目錄下,也可以放在系統默認模板目錄:templates/default。

在新內核插件中,你也會看到這樣的寫法:
  1. include template(’xxx’, 'xxxx’, 'xxxxx');
複製代碼
第一個參數,是模板文件名;
第二個是插件的唯一標識符;
第三個是模板文件存放的目錄;

範例如下
  1. include template(’tguide’, 'drc_tguide’, './plugins/drc_tguide/templates');
複製代碼
模板文件中,如何調用其他系統的模板文件呢?比如,我要做的頁面,需要頭部和尾部與論壇一致,那麼看下面(intro.htm):
  1. {template header}
  2. 這裏是自己模版文件內容區域
  3. {template footer}
複製代碼

{template header}這種是在模板文件(.htm)中調用其他模版文件的方法,像上面一樣,在開頭和結尾分別調用系統的頭部和尾部文件,即可實現自己的頁面與論壇保持一致的感覺。

然後呢,在模板文件中,可以直接使用對應php文件中的變量,或者系統的全局變量;

綜合上面幾點教程內容,我自己寫了個範例,大家可以下載參考: 範例文件.rar (1.69 KB, 下載次數: 423)

--------------------------------------------------------------------------

開啓及使用HTML教程:
http://bbs.7drc.com/plugin.php?id=tutorial:tutorial&type=changy&page=4

論壇“分類信息”設置與使用教程:
http://bbs.7drc.com/plugin.php?id=tutorial:tutorial&type=changy&page=5

文件對比工具(Beyond Compare)及使用教程:
http://bbs.7drc.com/plugin.php?id=tutorial:tutorial


發佈了3 篇原創文章 · 獲贊 7 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章