Discuz教程网

Discuz X2 站长推荐的弹窗实现原理

[复制链接]
authicon dly 发表于 2011-5-22 08:27:35 | 显示全部楼层 |阅读模式
站点推荐以浮窗的形式显示在帖子内容页面右下角,如果了解了原理,还可以弹出其他内容的窗口,而不仅限于站点推荐。下面简单说一下原理。
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、再回到浮窗的代码,


  1. <a href="javascript:;" class="y" title="{lang close}">{lang close}</a>
复制代码

当弹出窗口后,当用户关闭时,为了表示该信息已经弹出过,所以将此条信息的标识写到cookie中,便于在下次的弹出时避免重复。至于窗口的显示与否,完全靠控制 div 的 style 样式来实现。至于信息的内容显示就非常简单了,这里就不再详述了。 在进一步的二次开发中,完全可以利用这个流程,在合适的时间弹出所需要的窗口





上一篇:Discuz X2 下 URL 静态化的实现原理
下一篇:7.2升级2.0教程(7.2升级X2教程)
authicon 夕梨二世 发表于 2011-5-25 14:59:52 | 显示全部楼层
有意思~顶顶 ,继续顶顶。继续顶哦
authicon 蓝色天空k 发表于 2011-5-26 21:59:44 | 显示全部楼层
不错,谢谢分享
authicon shakesxia 发表于 2011-6-19 10:59:59 | 显示全部楼层
我回不回呢 考虑再三 还是不回了吧 ^_^
authicon huanglv80 发表于 2011-6-19 17:59:39 | 显示全部楼层
好东西,要下来看看
authicon cutiemimi 发表于 2011-6-21 11:07:56 | 显示全部楼层
感谢分享  收下了·····
authicon TRACYFLYING 发表于 2011-6-22 19:59:41 | 显示全部楼层
看看  好像不错
authicon 卡卡猫 发表于 2011-6-24 11:00:15 | 显示全部楼层
谢谢,学习了
authicon 纤陌陌 发表于 2011-6-27 05:00:16 | 显示全部楼层
这个不错呀
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-2 07:02

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表