parser

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

 

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

генерация навигатора по страницам аля "1 2 3 4 5 далее"

RUnner 25.08.2002 21:11

возникла задача: сделать функцию в которую можно передать url, количество страниц всего, текущую страницу, количество блоков информаци (например сообщений) на странице, количество циферок подрят в навигаторе, дополнителный текст который будел засунут в тэг <a>.
и чтобы получить на выходе <a href="url?s=0">1</a> и т.д. и т.п.
Т.е. навигатор аля на Яндексе когда при поиске много чего нашлось :-)
вот что я сделал, если у кого есть время раскритиковать - скажите, мне это для большего понимания Parser-а надо )))
ну и может вообще пригодится кому )))))
@generatenav[navstr;maxnum;current;onpage;onnav;style][delim;startnum;endnum;pagenum;onnav]
^if($maxnum>$onpage){
	^if($current<0){
		$current(0)
  	}
  	^if($current>$maxnum){
  		$current($maxnum)
  	}
  	^if(^navstr.match[\?][g]){
  		$delim[&]
  	}{
  		$delim[?]
  	}
  	^if(^math:floor($current/$onpage)>=$onnav){
		$startnum(^math:floor($current/$onpage))
		$startnum(^math:trunc($startnum/$onnav)*$onnav)
  	}{
  		$startnum(0)
  	}
	^if((($startnum+$onnav)*$onpage)<$maxnum){
		$endnum($startnum+$onnav-1)
  	}{
  		^if(^math:frac($maxnum/$onpage)==0){
			$endnum($maxnum/$onpage-1)
  		}{
			$endnum(^math:floor($maxnum/$onpage))
		}
  	}
  	^if($startnum>=$onnav){
  		<a href=^"${navstr}${delim}s=^eval(($startnum-1)*$onpage)^" $style>назад</a>&nbsp^;
  	}  	
  	^for[pagenum]($startnum;$endnum){
  		<a href=^"${navstr}${delim}s=^eval($pagenum*$onpage)^" $style>^if(($pagenum*$onpage)==$current){<b>$pagenum</b>}{$pagenum}</a>
  	}[&nbsp^;]
  	^if((($endnum+1)*$onpage)<$maxnum){
  		&nbsp^;<a href=^"${navstr}${delim}s=^eval(($endnum+1)*$onpage)^" $style>далее</a>
  	}
}
#end of @generatenav[$navstr;$maxnum;$current]


  • генерация навигатора по страницам аля "1 2 3 4 5 далее", RUnner 25.08.2002 21:11