Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

站长推荐的弹窗实现

[复制链接]
beijing200808 发表于 2011-5-16 15:22:38 | 显示全部楼层 |阅读模式
站点推荐以浮窗的形式显示在帖子内容页面右下角,如果了解了原理,还可以弹出其他内容的窗口,而不仅限于站点推荐。下面简单说一下原理。
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:;" 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 样式来实现。至于信息的内容显示就非常简单了,这里就不再详述了。 在进一步的二次开发中,完全可以利用这个流程,在合适的时间弹出所需要的窗口。


64243354 发表于 2011-5-16 19:58:45 | 显示全部楼层
來学習了
回复

使用道具 举报

xzmama 发表于 2011-5-16 21:45:59 | 显示全部楼层
支持一下
回复

使用道具 举报

bscsu 发表于 2011-5-20 21:44:54 | 显示全部楼层
怎么可以让他不写入cookie呢? 删除那段代码?
回复

使用道具 举报

apollo2010 发表于 2011-5-21 20:01:45 | 显示全部楼层
回复

使用道具 举报

155335677 发表于 2011-6-4 12:39:30 | 显示全部楼层
{:soso__17058074799002373572_2:}
回复

使用道具 举报

xyxsns 发表于 2011-8-10 20:27:19 | 显示全部楼层
不错{:soso_e179:}
回复

使用道具 举报

baoge_800 发表于 2011-8-10 22:41:27 | 显示全部楼层
学习了,这个很不错哦
回复

使用道具 举报

freeman3c 发表于 2011-8-11 07:50:13 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

mxl1983413 发表于 2011-8-11 13:11:13 | 显示全部楼层
只需一点小小的修改,让你的“站长推荐”更加生动!
https://discuz.dismall.com/thread-2176685-1-1.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-12-22 11:29 , Processed in 0.027399 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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