Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
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>