Discuz如何自主控制彈框的顯示

本文實現功能:

控制彈框的顯示與否

功能使用場景

在之前的一篇文章寫道,discuz實現自動註冊登錄。但是我們又不想讓那個提示信息出來。

在網上大概的搜索了一下,有的說後臺可以設置,但是咔咔到後邊瞅了一眼,它那個設置只是針對於固定的一些場景。

那麼我們自己可以來寫一個適合我們項目的顯示方式

彈框實現剖析

使用discuz一段時間的都知道,前臺的彈框其實就是後臺showmessage這個方法決定的。

我們用代碼追蹤到這個方法在upload/source/function/function_core.php文件裏 大概在1424行

圖片.png

然後我們在追蹤dshowmessage這個方法

最終這個方法的文件是在upload/source/function/function_message.php 這裏

然後我們把代碼拉到最後,可以看到一個show_messge的變量和加載了一個模板地址

圖片.png

這個時候我們就去找這個模板位置:upload/template/default/touch/common/showmessage.htm

在這個模板裏邊我們就能看到一個變量爲show_message

圖片.png

爲了證實模板裏的show_message和PHP文件裏邊的show_message是一致的我們來做個測試

修改:upload/source/function/function_message.php 238行

圖片.png

然後在頁面進行測試得到的結果是沒有問題的。倆個變量是一致的

圖片.png

實現自己的顯示方式

經過上邊的測試,我們得知upload/source/function/function_message.php 文件的238行的show_message 與模板 upload/template/default/touch/common/showmessage.htm的show_message一致。

那麼我們就可以聲明一個變量,如果是你想顯示自己的樣式就聲明一個變量,然後在模板裏邊控制

以下是咔咔案例:只要你有這個需求咔咔的這個方案100%可以解決你的問題

這段代碼是判斷用戶是否註冊了,如果註冊了就直接登錄。(這裏無需糾結,咔咔的案例是從原系統過來的。)

可以看到在showmessage中我新增了一個變量爲is_login,並且值爲1

圖片.png

我們既然需要在模板裏使用這個值,那就照貓畫虎,在upload/source/function/function_message.php文件裏也把is_login聲明爲全局變量

圖片.png

然後拿着這個值你就可以在upload/template/default/touch/common/showmessage.htm模板裏邊使用了

在這個裏邊加上你自己的if就可以了

圖片.png

還有一種特別簡單的方式就是在upload/source/function/function_message.php這個239行控制進入的模板

圖片.png

那麼這個時候需要做什麼呢!就是建這個模板了

在upload/template/default/touch/common這個目錄下複製這個showmassge這個文件

圖片.png

然後修改這個文件,讓進入後直接跳轉即可。

圖片.png

實現效果

在登錄時候彈框已經沒有了

圖片.png

在其他地方該有的還是有的

圖片.png

總結

在把本文的文件都修改完了以後呢!在一會想要使用自己定義的模板就可以直接使用

is_login就是你自定義模板的一個標識

showmessage('login_succeed', 'forum.php',['username'=>$username,'is_login'=>1],array('showdialog' => 1));

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章