我是小站长 發表於 2019-6-3 13:13:48

站长推荐的弹窗实现

<br /><font style="font-size:10.5pt">站点推荐以浮窗的形式显示在帖子内容页面右下角,如果了解了原理,还可以弹出其他内容的窗口,而不仅限于站点推荐。下面简单说一下原理。</font><font style="font-size:10.5pt">1、先找到浮窗的代码,在template\default\common\footer.htm 文件中,找到 id =&quot;sitefocus&quot; 的 div,如下图这段代码主要是将浮窗的结构,其中,第一行代码&lt;!--{eval $focusid =getfocus_rand($_G);}--&gt;是使用getfocus_rand函数,获取一个动态的focusid值。我们先来看一下getfocus_rand函数<br />2、打开source\function\function_core.php文件,找到在这段代码中,最重要的逻辑运算就是判断一个信息是否已经弹出过。这个是通过cookie值来判定,具体到代码实现,就是do-while循环部分。在这个循环中,首先随机获取focus数组中的一个值,然后,来判断cookie中是否有值,如果有值,直接忽略。如果没值,退出循环,准备返回此 focusid ,此后的过程将使用这个值来进行弹出操作。<br />3、再回到浮窗的代码,<font face="Calibri, sans-serif"><ol><li>&lt;a href=&quot;javascript:;&quot; onclick=&quot;setcookie('nofocus_$focusid', 1, $_G['cache']['focus']['cookie']*3600);$('sitefocus').style.display='none'&quot; class=&quot;y&quot; title=&quot;{lang close}&quot;&gt;{lang close}&lt;/a&gt;</ol></font>当弹出窗口后,当用户关闭时,为了表示该信息已经弹出过,所以将此条信息的标识写到cookie中,便于在下次的弹出时避免重复。至于窗口的显示与否,完全靠控制 div 的 style 样式来实现。至于信息的内容显示就非常简单了,这里就不再详述了。 在进一步的二次开发中,完全可以利用这个流程,在合适的时间弹出所需要的窗口。<br /></font><font style="font-size:10.5pt"><br /></font><br />弹出<em>, </em>窗口<em>, </em>代码

耗子 發表於 2019-6-9 08:28:24

感谢分享

xzaxza 發表於 2019-6-9 08:37:34

收藏一下,以防后患,谢谢分享
頁: [1]
查看完整版本: 站长推荐的弹窗实现