Для отображения рекламы с заданым приоритетом я сделал так: поставил модуль ad и написал небольшой кусочек кода прямо в блоке:
$SQL = "SELECT shower, probability from adshower ORDER BY id DESC LIMIT 1";
$result = db_query($SQL); $out = db_fetch_array($result);
$shower = preg_replace('/[^0-9,]/','',$out['shower']);
$probability = preg_replace('/[^0-9,]/','',$out['probability']);
$shower = preg_replace('/,+/',',',$shower);
$probability = preg_replace('/,+/',',',$probability);
$shower = preg_replace('/,$|^,/','',$shower);
$probability = preg_replace('/,$|^,/','',$probability);
$banners = explode(',',$shower);
$probabilities = explode(',',$probability);
$szB = sizeof($banners); $szP = sizeof($probabilities);
if ($szB > $szP) $probabilities = array_fill($szP+1, $szB-$szP, 1);
if ($szB < $szP) $probabilities = array_slice($probabilities, $szB);
for ($i = 0; $i < $szB; $i++) {
$total[$banners[$i]] = $probabilities[$i];
} ksort($total);
$banners = array_keys($total);
$probabilities = array_values($total);
$num = $probabilities;
$out = array();
$out[0] = $num[0];
$sum = 0;
for ($i = 1; $i < sizeof($num); $i++) {
$sum = $num[$i-1]+$sum;
$out[$i] = $sum*$num[$i];
}
$ret = array();
for ($i = 0; $i < sizeof($out); $i++) {
$tmp = array_fill(sizeof($ret), $out[$i], $banners[$i]);
$ret = array_merge($ret, $tmp);
}
$szof = sizeof($ret)-1;
return $ret[rand(0,$szof)];
}
$TID = get_banner();
$SQL = "SELECT tid from term_node WHERE nid = '$TID'";
$result = db_query($SQL); $out = db_fetch_array($result);
print '<div class="advertisement"><script type="text/javascript" src="/sites/all/modules/ad/serve.php?q=1&t='.$out['tid'].'"></script></div>';
Здесь функция забирает из базы id рекламных объявлений, а так же вероятности их появления.
В базу их складывает небольшой модуль. По большому счёту он не нужен, достаточно кода выше.
Возможно какнить сделаю полноценный модуль. Но не факт
Вложение | Размер |
---|---|
![]() | 1.95 КБ |
Комментарии
Сделай модуль!!!