站點(diǎn)推薦以浮窗的形式顯示在帖子內(nèi)容頁(yè)面右下角,如果了解了原理,還可以彈出其他內(nèi)容的窗口,而不僅限于站點(diǎn)推薦。下面簡(jiǎn)單說(shuō)一下原理。 1、先找到浮窗的代碼,在template\default\common\footer.htm 文件中,找到 id ="sitefocus" 的 div,如下圖這段代碼主要是將浮窗的結(jié)構(gòu),其中,第一行代碼<!--{eval $focusid =getfocus_rand($_G[basescript]);}-->是使用getfocus_rand函數(shù),獲取一個(gè)動(dòng)態(tài)的focusid值。我們先來(lái)看一下getfocus_rand函數(shù)
2、打開(kāi)source\function\function_core.php文件,找到在這段代碼中,最重要的邏輯運(yùn)算就是判斷一個(gè)信息是否已經(jīng)彈出過(guò)。這個(gè)是通過(guò)cookie值來(lái)判定,具體到代碼實(shí)現(xiàn),就是do-while循環(huán)部分。在這個(gè)循環(huán)中,首先隨機(jī)獲取focus數(shù)組中的一個(gè)值,然后,來(lái)判斷cookie中是否有值,如果有值,直接忽略。如果沒(méi)值,退出循環(huán),準(zhǔn)備返回此 focusid ,此后的過(guò)程將使用這個(gè)值來(lái)進(jìn)行彈出操作。
3、再回到浮窗的代碼,- <a href="javascript:;" onclick="setcookie('nofocus_$focusid', 1, $_G['cache']['focus']['cookie']*3600);$('sitefocus').style.display='none'" class="y" title="{lang close}">{lang close}</a>
復(fù)制代碼 當(dāng)彈出窗口后,當(dāng)用戶關(guān)閉時(shí),為了表示該信息已經(jīng)彈出過(guò),所以將此條信息的標(biāo)識(shí)寫(xiě)到cookie中,便于在下次的彈出時(shí)避免重復(fù)。至于窗口的顯示與否,完全靠控制 div 的 style 樣式來(lái)實(shí)現(xiàn)。至于信息的內(nèi)容顯示就非常簡(jiǎn)單了,這里就不再詳述了。 在進(jìn)一步的二次開(kāi)發(fā)中,完全可以利用這個(gè)流程,在合適的時(shí)間彈出所需要的窗口。
|