站點推薦以浮窗的形式顯示在帖子內容頁面右下角,如果了解了原理,還可以彈出其他內容的窗口,而不僅限于站點推薦。下面簡單說一下原理。 1、先找到浮窗的代碼,在template\default\common\footer.htm 文件中,找到 id ="sitefocus" 的 div,如下圖這段代碼主要是將浮窗的結構,其中,第一行代碼<!--{eval $focusid =getfocus_rand($_G[basescript]);}-->是使用getfocus_rand函數,獲取一個動態的focusid值。我們先來看一下getfocus_rand函數
2、打開source\function\function_core.php文件,找到在這段代碼中,最重要的邏輯運算就是判斷一個信息是否已經彈出過。這個是通過cookie值來判定,具體到代碼實現,就是do-while循環部分。在這個循環中,首先隨機獲取focus數組中的一個值,然后,來判斷cookie中是否有值,如果有值,直接忽略。如果沒值,退出循環,準備返回此 focusid ,此后的過程將使用這個值來進行彈出操作。
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>
復制代碼 當彈出窗口后,當用戶關閉時,為了表示該信息已經彈出過,所以將此條信息的標識寫到cookie中,便于在下次的彈出時避免重復。至于窗口的顯示與否,完全靠控制 div 的 style 樣式來實現。至于信息的內容顯示就非常簡單了,這里就不再詳述了。 在進一步的二次開發中,完全可以利用這個流程,在合適的時間彈出所需要的窗口。
|