parser

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

 

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

вариант, не знаю, то или нет...

L 20.06.2002 16:15

Не знаю, насколько этот код Вас устроит, но мне кажется, он делает то, что нужно. Этот вариант метода из второго урока, не вошедший в документацию:
@nav_menu[num_col]
#количество столцов передаем параметром
# Загружаем таблицу с списком разделов из файла sections.cfg
$sections[^table::load[/sections.cfg]]
#Задаем кол-во столбцов в таблице меню
#проверям $кол_столб на нулевое значение и присваеваем 4 по умолчанию
^if($num_col==0){$num_col(4)}
#проверяем, совпадает ли кол-во столбцов и строк в таблице $sections
^if(^sections.count[]==$num_col){
#если совпадает, то кол-во строк в табл.меню такое
$кол_строк(^math:floor(^eval(^sections.count[]/$num_col)-1))
}{
#если не совпадает, то кол-во строк в табл.меню такое
$кол_строк(^math:floor(^eval(^sections.count[]/$num_col)))
}
<table width=100% border=0 bgcolor="000000" cellspacing=1>
#задаем внешний цикл (генерация строк таблицы)
^for[outside](0;$кол_строк){
<tr bgcolor="ffffff">
#задаем внутренний цикл (генерация столбцов таблицы)
	^for[inside](0;$num_col-1){
#	Если кончились данные в таблице $sections, то столбец пустой
	^if($criterion==^eval(^sections.count[]-1)){
        <td bgcolor="#8F8F8F"></td>
        }{
#       Если данные есть, то вставляем их в текущий столбец строки
#	Смещаем указатель на нужную строку
        ^sections.offset(^eval($inside+$outside*$num_col))
#	Вводим критерий совпадения текущий строки с последней для создания пустых столбцов
        $criterion(^sections.offset[])
        	^if($sections.uri eq $request:uri){
		<td width=^eval(100/$num_col)[%d]% align=middle bgcolor="#80FF80"><nobr>$sections.name</nobr></td>
        	}{
               	<td width=^eval(100/$num_col)[%d]% align=middle><a href=$sections.uri><nobr>$sections.name</nobr></a></td>
        	}

#	Возвращаем указатель текущей строки на первую
        ^sections.offset(-^eval($inside+$outside*$num_col))
       	}
        }
</tr>
}
</table>