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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[已答复] 页面顶部广告、中部广告及底部广告变成显示多个

[复制链接]
lidq.jingwu 发表于 2009-6-24 14:54:41 | 显示全部楼层 |阅读模式
1.修改函数getad:
进入function/common.func.php文件,找到函数getad,将它替换为以下函数:
  1. //$value为频道或者广告ID, style为广告投放位置, pagetype广告投放页面
  2. function getad($type, $value, $pagetype='') {
  3.         global $_SGLOBAL, $_SCONFIG;

  4.         $adarr = $paramarr = $advlist = $adresult = array();
  5.         $advhtml = $adpageout = '';
  6.         $advcount = 0;
  7.         if($type == 'system') {
  8.                 if($value == 'space') {
  9.                         @include_once S_ROOT .'./data/system/adspace.cache.php';
  10.                 }else{
  11.                         @include_once S_ROOT .'./data/system/adsystem.cache.php';
  12.                 }
  13.                 //判断此频道是否有广告
  14.                 if(!empty($_SGLOBAL['ad'][$value]) || !empty($_SGLOBAL['ad']['all'])){
  15.                         if(!empty($_SGLOBAL['ad']['all']) && !empty($_SGLOBAL['ad'][$value])) {
  16.                                 $adarr = array_merge($_SGLOBAL['ad']['all'],$_SGLOBAL['ad'][$value]);
  17.                         }elseif(!empty($_SGLOBAL['ad'][$value])){
  18.                                 $adarr = $_SGLOBAL['ad'][$value];
  19.                         }else{
  20.                                 $adarr = $_SGLOBAL['ad']['all'];
  21.                         }
  22.                         foreach($adarr as $key=>$advalue) {
  23.                                 $paramarr = $advalue['parameters'];
  24.                                 if(!empty($paramarr['endtime']) && (strtotime($paramarr['startime']) > ($_SGLOBAL['timestamp']+$_SCONFIG['timeoffset']*3600) || (strtotime($paramarr['endtime']) < $_SGLOBAL['timestamp']+$_SCONFIG['timeoffset']*3600)))  {
  25.                                         continue;
  26.                                 } else {
  27.                                         //获取广告代码
  28.                                         switch($advalue['adtype']) {
  29.                                                 case 'text':
  30.                                                         $advhtml = '<a href="'.$paramarr['texturl'].'" target="_blank" style="font-size: '.$paramarr['fontsize'].'px;">'.stripslashes($paramarr['textcontent']).'</a>';
  31.                                                         break;
  32.                                                 case 'code':
  33.                                                         $advhtml = stripslashes($paramarr['adcodecontent']);
  34.                                                         break;
  35.                                                 case 'image':
  36.                                                         $advhtml = '<a href="'.$paramarr['imageurl'].'" target="_blank"><img src="'.$paramarr['imagesrc'].'" width="'.$paramarr['imagewidth'].'px" height="'.$paramarr['imageheight'].'px" alt="'.$paramarr['imagetext'].'" /></a>';
  37.                                                         break;
  38.                                                 case 'flash':
  39.                                                         $advhtml  = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" adcodebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,45,0" width="'.$paramarr['flashwidth'].'px" height="'.$paramarr['flashheight'].'px">';
  40.                                                         $advhtml .= '<param name="movie" value="'.stripslashes($paramarr['flashsrc']).'" />';
  41.                                                         $advhtml .= '<param name="quality" value="high" />';
  42.                                                         $advhtml .= '<embed src="'.stripslashes($paramarr['flashsrc']).'" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="'.$paramarr['flashwidth'].'px" height="'.$paramarr['flashheight'].'px"></embed>';
  43.                                                         $advhtml .= '</object>';
  44.                                         }
  45.                                         if(!empty($pagetype) && in_array($pagetype, explode("\t", $advalue['pagetype'])) || in_array('all', explode("\t", $advalue['pagetype']))) {
  46.                                                 if($advalue['style'] == 'pageoutindex' || $advalue['style'] == 'all') {
  47.                                                         $adpageout = addcslashes($advhtml , '/"\\');
  48.                                                         $adpageout = str_replace("\n",  '<br />',$adpageout);
  49.                                                         $adpageout = str_replace("\r",  '',$adpageout);
  50.                                                         $adpageout = <<<EOF
  51. <script type="text/javascript">
  52. function openwin() {
  53.         OpenWindow=window.open("", (window.name!="newwin")?"newwin":"", "height={$paramarr[outwidth]}px, width={$paramarr[outheight]}px,toolbar=no ,scrollbars=no,menubar=no");
  54.         OpenWindow.document.write("$adpageout");
  55.         OpenWindow.document.close();
  56. }
  57. openwin();
  58. </script>
  59. EOF;
  60.                                                 }
  61.                                         } else {
  62.                                                 continue;
  63.                                         }
  64.                                         switch($advalue['style']) {
  65.                                                 case 'pageoutindex' :
  66.                                                         $advlist['pageoutindex'][] = $adpageout;
  67.                                                         break;
  68.                                                 case 'all' :
  69.                                                         $advlist['pageheadad'][] = $advhtml;
  70.                                                         $advlist['pagecenterad'][] = $advhtml;
  71.                                                         $advlist['pagefootad'][] = $advhtml;
  72.                                                         $advlist['pagemovead'][] = $advhtml;
  73.                                                         $advlist['pageoutad'][] = $advhtml;
  74.                                                         $advlist['siderad'][] = $advhtml;
  75.                                                         $advlist['viewinad'][] = $advhtml;
  76.                                                         $advlist['pageoutindex'][] = $adpageout;
  77.                                                         break;
  78.                                                 default :
  79.                                                         $advlist[$advalue['style']][] = $advhtml;
  80.                                         }
  81.                                 }
  82.                         }
  83.                         foreach($advlist as $key=>$value) {
  84.                                 $advcount = count($value);
  85.                                 if($key=='pageheadad'){                //显示多个顶部广告
  86.                                         $adresult['pageheadad'] = $value;
  87.                                 }elseif($key=='pagefootad'){        //显示多个底部广告
  88.                                         $adresult['pagefootad'] = $value;
  89.                                 }elseif($key=='pagecenterad'){        //显示多个中央横幅广告
  90.                                         $adresult['pagecenterad'] = $value;
  91.                                 }else{
  92.                                         if($advcount>0) {
  93.                                                 $adresult[$key] = $advcount > 1 ? $value[mt_rand(0, $advcount -1)] : $value[0];
  94.                                         }
  95.                                 }
  96.                         }
  97.                        
  98.                         if(!empty($adresult)) {
  99.                                 return $adresult;
  100.                         } elseif(empty($adresult)){
  101.                                 return '';
  102.                         }
  103.                 } else {
  104.                         return '';
  105.                 }
  106.         } elseif($type == 'user') {
  107.                 @include_once S_ROOT .'./data/system/aduser.cache.php';
  108.                 $adid = intval($value);
  109.                 $adarr = $_SGLOBAL['ad'][$adid];
  110.                 $paramarr = $adarr['parameters'];
  111.                 if(!empty($paramarr['endtime']) && (strtotime($paramarr['startime']) > ($_SGLOBAL['timestamp']+$_SCONFIG['timeoffset']*3600) || (strtotime($paramarr['endtime']) < $_SGLOBAL['timestamp']+$_SCONFIG['timeoffset']*3600))) {
  112.                         return '';
  113.                 } else {
  114.                         return $paramarr['adechocontent'];
  115.                 }
  116.         }
  117. }
复制代码
2、这样在页面上接收到的返回值中头部和尾部广告就是一个数组,而不是单一的值,然后就可以在页面上循环显示了。
在每个页面中都有这样一句代码:
  1. <!--{eval $ads = getad('system', 'indexad', '1'); }-->
复制代码
它是将所有要显示的广告取出来放在变量$ads里面,这个代码基本上在每个页面上都会有,不用管它,我们要修改的是显示代码。
广告的显示代码都是形如这个样子的:
  1. <!--{if !empty($ads['pageheadad']) }-->
  2.         <div class="ad_header">$ads[pageheadad]</div>
  3. <!--{/if}-->
复制代码
$ads的key值决定了要显示哪种广告,修改为形如下面这样的:
  1. <!--{if !empty($ads['pageheadad']) }-->
  2. <!--{loop $ads['pageheadad'] $ad}-->
  3.         <div class="ad_header">$ad</div>
  4. <!--{/loop}-->
  5. <!--{/if}-->
复制代码
显示广告的代码在在每个模块文件中都有,要正常显示,需要全部修改才行。
注意:上面修改过的函数只对应中央横幅广告(pagecenterad)、顶部广告(pageheadad)、底部广告(pagefootad)。
上面给出的修改方法,只是显示,不保证美观。

评分

2

查看全部评分

zentley 发表于 2009-6-26 15:45:54 | 显示全部楼层
修改起来比较麻烦 。。
回复

使用道具 举报

zjb888999 发表于 2009-6-28 13:41:04 | 显示全部楼层
显示广告的代码在在每个模块文件中都有,要正常显示,需要全部修改才行。
可以详细说明一下是那个文件夹下的那些文件吗???
回复

使用道具 举报

china2008sc 发表于 2009-7-15 14:16:57 | 显示全部楼层
好象很复杂一样.
回复

使用道具 举报

 楼主| lidq.jingwu 发表于 2009-7-15 14:26:12 | 显示全部楼层
在默认模板的的文件夹里面除了header.html.php,footer.html.php两个文件外,其他模板都有,找到下面的代码:
页面全局代码:

  1. <!--{eval $ads = getad('system', 'indexad', '1'); }-->
复制代码

广告显示代码:

  1. <!--{if !empty($ads['key值']) }-->
  2.         <div class="ad_header">$ads[key值]</div>
  3. <!--{/if}-->
复制代码
回复

使用道具 举报

社区泡泡 发表于 2009-7-28 13:42:20 | 显示全部楼层
  高人,支持你
回复

使用道具 举报

mgqhjw9869 发表于 2009-9-5 20:09:35 | 显示全部楼层
哪位可以直接提供已经修改好的文件下载吗??

网极社区门户
http://www.8998cn.com

也遇到这个问题
回复

使用道具 举报

SunyAndyFen 发表于 2009-9-7 13:27:55 | 显示全部楼层
明白点了!多谢啊!
回复

使用道具 举报

mgqhjw9869 发表于 2009-9-17 00:03:48 | 显示全部楼层
朋友!修改好了?就共享出来呀
回复

使用道具 举报

qdy1985 发表于 2009-9-22 14:53:58 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 20:33 , Processed in 0.047985 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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