天乐博客
扫描关注天乐博客

手机扫描二维码

discuz论坛修改记录

天乐博客2020-05-06未分类 49

discuz广告调用修改:

修改文件source/function/function_core.php 的adshow函数,增加了广告调用数量的控制

function adshow($parameter) {
	global $_G;
	if($_G['inajax'] || $_G['group']['closead']) {
		return;
	}
	if(isset($_G['config']['plugindeveloper']) && $_G['config']['plugindeveloper'] == 2) {
		return '<hook>[ad '.$parameter.']</hook>';
	}
	$params = explode('/', $parameter);
	$customid = 0;
	$customc = explode('_', $params[0]);
	if($customc[0] == 'custom') {
		$params[0] = $customc[0];
		$customid = $customc[1];
	}
	// 增加调用数量
	if ($customc[2]) {
    	    $num = $customc[2];
	}
	$adcontent = null;
	if(empty($_G['setting']['advtype']) || !in_array($params[0], $_G['setting']['advtype'])) {
		$adcontent = '';
	}
	if($adcontent === null) {
		loadcache('advs');
		$adids = array();
		$evalcode = &$_G['cache']['advs']['evalcode'][$params[0]];
		$parameters = &$_G['cache']['advs']['parameters'][$params[0]];
		$codes = &$_G['cache']['advs']['code'][$_G['basescript']][$params[0]];
		if(!empty($codes)) {
			foreach($codes as $adid => $code) {
				$parameter = &$parameters[$adid];
				$checked = true;
				@eval($evalcode['check']);
				if($checked) {
				    $adids[] = $adid;
				}
			}
			if(!empty($adids)) {
				$adcode = $extra = '';
				@eval($evalcode['create']);
				if(empty($notag)) {
					// $adcontent = '<div'.($params[1] != '' ? ' class="'.$params[1].'"' : '').$extra.'>'.$adcode.'</div>';  discuz默认代码
					// 修改为以下代码,增加了广告数量控制和随机显示
					if($num>1){
						$adcontent ='';
						shuffle($adids);
						foreach($adids as $adKey => $adID)
						{
						    if($adKey == $num) break;
					        $adcode=$codes[$adID];
					        $adcontent .= '<div'.($params[1] != '' ? ' class="'.$params[1].'"' : '').$extra.'>'.$adcode.'</div>';
						}
					}else{
					    $adcontent = '<div'.($params[1] != '' ? ' class="'.$params[1].'"' : '').$extra.'>'.$adcode.'</div>';
					}

				} else {
					$adcontent = $adcode;
				}
			}
		}
	}
	$adfunc = 'ad_'.$params[0];
	$_G['setting']['pluginhooks'][$adfunc] = null;
	hookscript('ad', 'global', 'funcs', array('params' => $params, 'content' => $adcontent), $adfunc);
	if(!$_G['setting']['hookscript']['global']['ad']['funcs'][$adfunc]) {
		hookscript('ad', $_G['basescript'], 'funcs', array('params' => $params, 'content' => $adcontent), $adfunc);
	}
	return $_G['setting']['pluginhooks'][$adfunc] === null ? $adcontent : $_G['setting']['pluginhooks'][$adfunc];
}

模板调用代码:

discuz默认调用代码为 <!--{ad/custom_2}-->

新的控制广告显示数量代码为 <!--{ad/custom_2_3}-->  红色为调用数量