parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

yes 19.05.2003 10:12

Без использования БД. Вся информация берётся из таблицы. Существует возможность разграничения по-группам (для разных размеров, мест расположения на странице...). Ограничение только по количеству баннеропоказов. По исчерпанию баннеропоказов показывается баннер по-умолчанию...
@show[bid;bgroup;counter]
#######
####Содержит все записи из banner.cfg.
$all[^table::load[/banner.cfg]]

#######
####Содержит записи, соответствующие группе. 
$bygroup[^all.select($all.group_id==$bgroup)]

#######
####Содержит записи, лимит которых не исчерпан.
$bylimit[^all.select($all.showed < $all.limit)]

#######
####Содержит записи, соответствующие группе, лимит которых не исчерпан.
$bygrouplimit[^all.select($all.group_id==$bgroup && $all.showed < $all.limit)]

#######
####Содержит таблицу с баннерами по-умолчанию.
$defbanner[^table::load[/defbanner.cfg]]

#######
####Начало обработки
^if($bid != 0){
$bselect[^bylimit.select($bylimit.id==$bid)]
 ^if(^bselect.count[]==1 && $counter eq count){
 $selcut[^all.select($all.id!=$bselect.id)]
 $showed[^eval($bselect.showed+1)]
 ^selcut.append{$bselect.id	$bselect.path	$bselect.group_id	$showed	$bselect.limit	$bselect.w	$bselect.h	$bselect.link}
 ^selcut.sort($selcut.id)
 ^selcut.save[/banner.cfg]
 }
}{
 ^if($bgroup !=0){
  ^switch[^bygroup.count[]]{
   ^case[0]{
   $bselect[^defbanner.select($defbanner.group_id==$bgroup)]
   }
   ^case[1]{
   $bselect[^bygroup.select(^bygroup.line[]==1)]
    ^if(^bselect.count[]==1 && $bselect.showed < $bselect.limit && $counter eq count){
    $selcut[^all.select($all.id!=$bselect.id)]
    $showed[^eval($bselect.showed+1)]
    ^selcut.append{$bselect.id	$bselect.path	$bselect.group_id	$showed	$bselect.limit	$bselect.w	$bselect.h	$bselect.link}
    ^selcut.sort($selcut.id)
    ^selcut.save[/banner.cfg]
    }
   }
   ^case[DEFAULT]{
    ^switch[^bygrouplimit.count[]]{
     ^case[0]{
     $bselect[^defbanner.select($defbanner.group_id==$bgroup)]
     }
     ^case[1]{
     $bselect[^bygrouplimit.select(^bygrouplimit.line[]==1)]
      ^if(^bselect.count[]==1 && $counter eq count){
      $selcut[^all.select($all.id!=$bselect.id)]
      $showed[^eval($bselect.showed+1)]
      ^selcut.append{$bselect.id	$bselect.path	$bselect.group_id	$showed	$bselect.limit	$bselect.w	$bselect.h	$bselect.link}
      ^selcut.sort($selcut.id)
      ^selcut.save[/banner.cfg]
      }
     }
     ^case[DEFAULT]{
     $rndselect[^eval(^math:random(^bygrouplimit.count[])+1)]
     $bselect[^bygrouplimit.select(^bygrouplimit.line[]==$rndselect)]
      ^if(^bselect.count[]==1 && $counter eq count){
      $selcut[^all.select($all.id!=$bselect.id)]
      $showed[^eval($bselect.showed+1)]
      ^selcut.append{$bselect.id	$bselect.path	$bselect.group_id	$showed	$bselect.limit	$bselect.w	$bselect.h	$bselect.link}
      ^selcut.sort($selcut.id)
      ^selcut.save[/banner.cfg]
      }
     }
    }
   }
  }
 }{
  ^switch[^bylimit.count[]]{
   ^case[0]{
    ^switch[^all.count[]]{
     ^case[0]{}
     ^case[1]{
     $bselect[^all.select(^all.line[]==1)]
     }
     ^case[DEFAULT]{
     $rndselect[^eval(^math:random(^all.count[])+1)]
     $bselect[^all.select(^all.line[]==$rndselect)]
     }
    }
   }
   ^case[1]{
   $bselect[^bylimit.select(^bylimit.line[]==1)]
    ^if(^bselect.count[]==1 && $counter eq count){
    $selcut[^all.select($all.id!=$bselect.id)]
    $showed[^eval($bselect.showed+1)]
    ^selcut.append{$bselect.id	$bselect.path	$bselect.group_id	$showed	$bselect.limit	$bselect.w	$bselect.h	$bselect.link}
    ^selcut.sort($selcut.id)
    ^selcut.save[/banner.cfg]
    }
   }
   ^case[DEFAULT]{
   $rndselect[^eval(^math:random(^bylimit.count[])+1)]
   $bselect[^bylimit.select(^bylimit.line[]==$rndselect)]
    ^if(^bselect.count[]==1 && $counter eq count){
    $selcut[^all.select($all.id!=$bselect.id)]
    $showed[^eval($bselect.showed+1)]
    ^selcut.append{$bselect.id	$bselect.path	$bselect.group_id	$showed	$bselect.limit	$bselect.w	$bselect.h	$bselect.link}
    ^selcut.sort($selcut.id)
    ^selcut.save[/banner.cfg]
    }
   }
  }
 }
}

#######
####Вывод полученного баннера.
<a href="$bselect.link"><img src="$bselect.path" width="$bselect.w" height="$bselect.h" border="0"></a>
Вызывается так:
^show[bid;bgroup;counter]
Если указан bid то будет вызываться конкретный баннер, если указан bgroup, то будут показываться баннеры из этой группы, если
counter = "count", то показы считаются (если нет - то нет).