paip.DISCUZ道具開發指南-attilax總結-

paip.DISCUZ道具開發指南-attilax總結-javascript

今天我要開發一款DISCUZ  X2.5 道具,名字就叫「強烈抗議」,場景以下:一天,某我的看了別人一篇貼子,以爲滿篇都是胡說八道, 只要用了「強烈抗議」這個道具,這個貼子就會被隱藏起來一段時間,全部人都看不到了。。php

說動手就動手。java

道具管理後臺:http://127.0.0.1/m_dx/admin.phpnode

管理中心>運營>道具中心..數據庫

先去道具中心看了款「喧囂卡」,這個道具,就以這個爲原形了,它的圖片地址是static/image/magic/open.gif ,因而我也弄了個 「強烈抗議」圖片,名爲 del.gif ,放入其目錄下,ide

其中還有個小圖片*.small.gif,應該是前臺顯示小圖用的,也作了個小圖片del.small.gif post

而後,要增長道具了,搜索了下可先看看官方道具開發手冊,位置:歡迎來到 Discuz! 技術文庫>3.歡迎來到 Discuz! 技術文庫>3.3 3.3 插件機制 >第三方拓展類的開發 > 道具類測試

主要說明有下:ui

腳本位置:source/class/magic/*.phpthis

語言包位置:source/language/magic/*.php 

..........................

............................

因而,來到source/class/magic/目錄,把open.php,這個是「喧囂卡」的PHP,我直接copy了下,更名爲del.php,這樣個人腳本就差很少了,打開del.php,看了下,主要有三行要注意看下..

var $name = 'open_name';   //道具名稱

var $description = 'open_desc'; //道具描述

'title' => 'open_forum',   //道具描述

而後,我到語言包位置:source/language/magic/*.php ,下copylang_open.php,這個是「喧囂卡」的語言包,更名爲lang_del.php,而後把open_name,open_desc等描述改動成本身的...

而後在 del.php  usesubmit(),這個是重點,指名道具使用後的動做代碼。。。寫了下。。把動做代碼寫好。。

接着,我在後臺道具中心測試道具,發現已經多了一行,道具已經顯示出來了,名字是「強烈抗議」,不過圖片沒有顯示出來..啊,

只好先調試解決圖片不出來的問題:

---------------後臺不能顯示道具圖片的調試-------------

1.admin.php

require discuz_admincp->admincpfile($action);

return './source/admincp/admincp_'.$action.'.php';

2. source/admincp/admincp_magics.php

line 52  (file_exists(DISCUZ_ROOT.'./static/image/magic/'.$magic['identifier'].'.gif') ? '<img class="vmiddle" src="static/image/magic/'.$magic['identifier'].'.gif" />' : '') ,

其中這裏有圖片的URL,可斷點打出來看具體狀況...

 3  .其中我看了下讀取圖片的代碼 ,讀取道具圖片流程--------------

DISCUZ讀取道具圖片的名字,主要根據腳本位置:source/class/magic/*.php,來的,,,

主要代碼以下:

source/admincp/admincp_magics.php   

function getmagics() {

global $_G;

$dir = DISCUZ_ROOT.'./source/class/magic';

$magicdir = dir($dir);

$magics = array();

while($entry = $magicdir-&gt;read()) {

通過個人調試,原來是圖片文件名拼錯了,回到static/image/magic/下,把圖片名字改好了。就OK了。。

此時,後臺道具中心界面,新加的道具圖片顯示出來了,而後保存了下設置。。。發現有個英文字串open_desc改不掉。。但是我明明在語言包都設置好了啊。查了下PHP文件,發現沒問題,我估計應該在數據庫表裏,因此我要檢索整個數據庫查出來。。先將數據庫導出爲SQL文件,而後檢索,發現open_descpre_common_magic這個表裏,打開表一看,啊,道具設置都保存在這裏了...我推測,應該是首次保存道具設置的時候,就把數據保存在這裏了。。而後改了open_desc再回後臺刷新,果真ok了。。。

而後,就要在前臺顯示道具了,在後臺把道具的顯示權限,容許使用本道具的版塊:」,這裏設置下顯示的板塊, 道具權限 ,我統統全選了..

但是在前臺,我打開一個貼子,準備使用道具是,卻發現沒有個人「強烈抗議」道具。。再次開始調試,爲了方便,我從前臺CSSHTML開始跟蹤,我用的IE9,直接F12,跟蹤到 「使用道具「,這個這串附近,代碼以下:

<p>

<a href="javascript:;" id="mgc_post_1" onmouseover="showMenu(this.id)" class="showmenu">使用道具</a>

</p>

<ul id="mgc_post_1_menu" class="p_pop mgcmn" style="display: none;">

<li><a href="home.php?mod=magic&mid=bump&idtype=tid&id=1" id="a_bump" onclick="showWindow(this.id, this.href)"><img src="static/image/magic/bump.small.gif" />提高卡</a></li>

<li><a href="home.php?mod=magic&mid=stick&idtype=tid&id=1" id="a_stick" onclick="showWindow(this.id, this.href)"><img src="static/image/magic/stick.small.gif" />置頂卡</a></li>

重點是這個<ul>,我把它的ID  mgc_post_1_menu 檢索了全部文件沒發現,又在數據庫裏檢索,也沒發現....我推測多是拼接成的,因而只檢索前半部分mgc_post果真在PHP文件中發現了,templatedefaultforumviewthread_node.htm ,這個是在模板裏啊。打開一看,附近代碼以下,再綜合class="p_pop mgcmn" 這個判斷,就是它了..

 <ul id="mgc_post_$post[pid]_menu" class="p_pop mgcmn" style="display: none;">

<!--{if $post['first']}-->

  <!--{if !empty($_G['setting']['magics']['del'])}-->

             <li><href="。。。。。。「><img >。。。。。。。。</a></li>

<!--{/if}-->

其中的<!--{/if}-->我以爲有問題,寫法,寫HTML註釋不用這麼麻煩,又想了下,應該是模塊專用語法,好從中提取HTML。。

因而我也複製了其中的一個<li>,照着改動了下,就行了。而後前臺貼子片一看,YH,終於OK了。顯示出來了,可使用了..

這樣個人第一個discuz X2.5道具開發,就取得了完美的結果.. .......................

Attilax  寫於2012.7.9 PM

相關文章
相關標籤/搜索