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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[已经确认] SupeSite 6.0 系统广告与自定义广告不能同时显示的解决方法

[复制链接]
3gmatrix 发表于 2009-11-22 12:17:39 | 显示全部楼层 |阅读模式
前段时间发现个SupeSite 6.0的问题:在一个页面里如果既有系统广告又有自定义的广告,那么排在第一个系统广告后面的所有自定义广告都不能正常显示(排在第一个系统广告前面的自定义广告可以显示)!

通过分析源代码data/system/目录下的adsystem.cache.php和aduser.cache.php两个程序,发现是由于每当这两个cache文件被include时,其定义的全局变量$_SGLOBAL['ad']覆盖了之前的值(这应该是SupeSite 6.0的一个bug)。

这样,如果你在模板中先输出系统广告,那么adsystem.cache.php就会被先include,这时你输出系统广告是没问题的;如果你的模板后来要输出自定义广告,那么aduser.cache.php就会被include,这时,你输出自定义广告也是没问题的;但是,如果你之后又要输出系统广告,那么问题就出来了,你的系统广告再也不能正常显示了(反之也是这样)。

这是因为aduser.cache.php被include之后,其中定义的全局变量$_SGLOBAL['ad']覆盖了之前adsystem.cache.php中定义的$_SGLOBAL['ad'],这样系统广告就再也不能正常显示了!

经过几次尝试后终于找到了一个蹩脚的解决方法:
http://www.3gmatrix.cn/4/viewspace-27351.html
文章的附件是一个补丁程序,它实现的功能就是重写adsystem.cache.php和aduser.cache.php两个cache文件(其实还有一个adspace.cache.php)的内容,让全局变量$_SGLOBAL['ad']不再覆盖之前的已有值,而是把自己cache的广告内容追加到变量$_SGLOBAL['ad']里。这样系统广告又有自定义的广告就可以共存,不会发生冲突了。

具体效果可以参见:http://www.3gmatrix.cn/mobile/nokia/nokia-e71/
页面顶部的通栏是一个自定义广告,中间的通栏是一个系统广告,页面右侧又是一个自定义广告

如何使用附件中的补丁程序:
把附件中的admin_ad_patch.php.zip解压缩,将得到的admin_ad_patch.php上传到你站点的supesite 6.0的安装目录的admin目录下;然后每次你做完广告的修改操作后就访问一下这个补丁程序 http://www.yoursite.com/supesite的安装目录/admin/admin_ad_patch.php;之后你的广告就能正常显示了。

注意:
为了安全起见,你在上传admin_ad_patch.php之前最好给他改个名(改个只有你自己知道的文件名),然后再上传。
lidq.jingwu 发表于 2009-11-25 11:44:54 | 显示全部楼层
bug确认,已经反馈给开发人员~~
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 12:29 , Processed in 0.021653 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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