本文實(shí)現(xiàn)功能:
控制彈框的顯示與否
功能使用場景
在之前的一篇文章寫道,discuz實(shí)現(xiàn)自動(dòng)注冊登錄。但是我們又不想讓那個(gè)提示信息出來。
在網(wǎng)上大概的搜索了一下,有的說后臺(tái)可以設(shè)置,但是咔咔到后邊瞅了一眼,它那個(gè)設(shè)置只是針對于固定的一些場景。
那么我們自己可以來寫一個(gè)適合我們項(xiàng)目的顯示方式
彈框?qū)崿F(xiàn)剖析
使用discuz一段時(shí)間的都知道,前臺(tái)的彈框其實(shí)就是后臺(tái)showmessage
這個(gè)方法決定的。
我們用代碼追蹤到這個(gè)方法在upload/source/function/function_core.php
文件里 大概在1424行
然后我們在追蹤dshowmessage
這個(gè)方法
最終這個(gè)方法的文件是在upload/source/function/function_message.php
這里
然后我們把代碼拉到最后,可以看到一個(gè)show_messge
的變量和加載了一個(gè)模板地址
這個(gè)時(shí)候我們就去找這個(gè)模板位置:upload/template/default/touch/common/showmessage.htm
在這個(gè)模板里邊我們就能看到一個(gè)變量為show_message
。
為了證實(shí)模板里的show_message和PHP文件里邊的show_message是一致的我們來做個(gè)測試
修改:upload/source/function/function_message.php
238行
然后在頁面進(jìn)行測試得到的結(jié)果是沒有問題的。倆個(gè)變量是一致的
實(shí)現(xiàn)自己的顯示方式
經(jīng)過上邊的測試,我們得知upload/source/function/function_message.php 文件的238行的show_message 與模板 upload/template/default/touch/common/showmessage.htm的show_message一致。
那么我們就可以聲明一個(gè)變量,如果是你想顯示自己的樣式就聲明一個(gè)變量,然后在模板里邊控制
以下是咔咔案例:只要你有這個(gè)需求咔咔的這個(gè)方案100%可以解決你的問題
這段代碼是判斷用戶是否注冊了,如果注冊了就直接登錄。(這里無需糾結(jié),咔咔的案例是從原系統(tǒng)過來的。)
可以看到在showmessage中我新增了一個(gè)變量為is_login,并且值為1
我們既然需要在模板里使用這個(gè)值,那就照貓畫虎,在upload/source/function/function_message.php文件里也把is_login聲明為全局變量
然后拿著這個(gè)值你就可以在upload/template/default/touch/common/showmessage.htm模板里邊使用了
在這個(gè)里邊加上你自己的if就可以了
還有一種特別簡單的方式就是在upload/source/function/function_message.php這個(gè)239行控制進(jìn)入的模板
那么這個(gè)時(shí)候需要做什么呢!就是建這個(gè)模板了
在upload/template/default/touch/common這個(gè)目錄下復(fù)制這個(gè)showmassge這個(gè)文件
然后修改這個(gè)文件,讓進(jìn)入后直接跳轉(zhuǎn)即可。
實(shí)現(xiàn)效果
在登錄時(shí)候彈框已經(jīng)沒有了
在其他地方該有的還是有的
總結(jié)
在把本文的文件都修改完了以后呢!在一會(huì)想要使用自己定義的模板就可以直接使用
is_login就是你自定義模板的一個(gè)標(biāo)識(shí)
showmessage('login_succeed', 'forum.php',['username'=>$username,'is_login'=>1],array('showdialog' => 1));