parser

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

 

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

это и есть самая трудная часть дела

agat 18.11.2002 16:32 / 18.11.2002 16:33

Это метод, при вызове которого формируется древовидная структура сайта, начиная с корневого каталога
@getfiles[]
$dir[/]
$search[^file:list[$dir]]
^if($search){
 ^search.menu{
 $str[$search.name]
#здесь мы говорим, чтобы выводились только .html файлы. Папки admin,classes и i считаются системными - их не выводим
 ^if(^str.match[\.html^$] || !^str.match[\.] && !^str.match[^^admin^$] && !^str.match[^^i^$] && !
^str.match[^^classes^$]){
 ^if(!^str.match[\.]){
 <ul>
 $search.name<br>
#в случае с папкой выводим её содержимое. Получается рекурсия.
 ^getsub[${dir}${str}]
 </ul>
 }{
 $search.name
#а здесь я не знал, что вывести, и остановился просто на размере файла
 $f[^file::load[text;${dir}${str}]] $f.size<br>
 }
 }
 }
}

@getsub[subdir]
#метод рекурсии просмотра содержимого очередной папки
$subs[^file:list[$subdir/]]
^if($subs){
 ^subs.menu{
 $str[$subs.name]
 ^if(^str.match[\.html^$] || !^str.match[\.]){
 ^if(!^str.match[\.]){
 <li>$subs.name
 <ul>
 $subdir[${subdir}/${str}]
 ^getsub[$subdir]
 </ul>
 }{
 <li>$subs.name
 $f[^file::load[text;${subdir}/${str}]] $f.size
 }
 }
 }
}
код писался давно, тогда я мог многого не знать. Поэтому за спортивность кода не ручаюсь. В крайнем случае - можете его доработать.