根据运营改造定制的特殊需求,不一定适合每个人。PW默认的广告位可以设置随机显示,但是不同广告多个楼层同时展示时会出现随机重复,这给广告投放带来不便,所以改造一下让它真正按广告条数比例均匀分配随机轮转起来。此方法改造过后后台新增广告理论上跟原来一样,如有错误请检查是否包含违反JS语法的特别符号。改造过后,论坛首页分类间后台的楼层设置仅作随机轮转楼层范围设置,原来的指定楼层显示功能取消。
随机轮转广告位对于客户来讲机会均等,统一定价排位不分先后随机轮转展示,销售会便利很多。
1、将后台>运营>广告管理>论坛首页分类间广告位的广告显示方式设置为“显示全部”。
2、require/common.php,在 pwAdvert 整个函数下新增:- function pwAdvert4JS($advKey, $fid = 0, $lou = -1, $scr = 0) {
- global $timestamp, $db_advertdb, $db_mode, $_time;
- if (empty($db_advertdb[$advKey])) return false;
- $hours = $_time['hours'] + 1;
- $fid || $fid = $GLOBALS['fid'];
- $scr || $scr = $GLOBALS['SCR'];
- $scr = strtolower($scr);
- $lou = (int) $lou;
- $tmpAdvert = $db_advertdb[$advKey];
- if ($db_advertdb['config'][$advKey] == 'rand') {
- shuffle($tmpAdvert);
- }
- $arrAdvert = array();
- $advert = '';
- foreach ($tmpAdvert as $key => $value) {
- if ($value['stime'] > $timestamp || $value['etime'] < $timestamp || ($value['dtime'] && strpos(",{$value['dtime']},", ",{$hours},") === false) || ($value['mode'] && strpos($value['mode'], $db_mode) === false) || ($value['page'] && (strpos($value['page'], ",$scr,") === false || ($scr == 'read' && $value['page'] == 'thread'))) || ($value['fid'] && $scr != 'index' && strpos(",{$value['fid']},", ",$fid,") === false) || ($value['lou'] && strpos(",{$value['lou']},", ",$lou,") === false)) {
- continue;
- }
- if ((!$value['ddate'] && !$value['dweek']) || ($value['ddate'] && strpos(",{$value['ddate']},", ",{$_time['day']},") !== false) || ($value['dweek'] && strpos(",{$value['dweek']},", ",{$_time['week']},") !== false)) {
- $arrAdvert[] = $value['code'];
- $advert .= is_array($value['code']) ? "'".$value['code']['code']."'," : "'".$value['code']."',";
- if ($db_advertdb['config'][$advKey] != 'all') break;
- }
- }
- return array($advert, $arrAdvert);
- }
复制代码
3、template/wind/index.htm查找:- list($htmlAdvert,$arrayAdvert) = pwAdvert('Mode.Layer.Index',-1,$_adindex);
- if($htmlAdvert){print
复制代码
替换成:- $rand = $_adindex - 1;
- list($htmlAdvert,$arrayAdvert) = pwAdvert4JS('Mode.Layer.Index',-1,$_adindex);
- if($htmlAdvert){print
- document.write(indexcate_arr[$rand]);
复制代码
4、照常管理广告,结束。
可以根据需要扩展应用到其他类似广告位上,思路已在上面,类似操作即可。 |