parser

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

 

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

Ответ

Sergey M. 15.03.2003 14:13

да, вы правы, должно быть $items.dir, опечатался, спасибо.

вот/те/бе/на/за... - у меня таких URI нету ;), но если какой нибудь недоброжелатель введёт www.moi-sait.ru/vot/te/be/na/za... то исходный вариант будет менюшить все каталоги до победного конца...

идея с ^parts.offset[set](-1) - первое что пришло в голову. Поискал по форуму "как выйти из цикла", советуют либо ^while() либо ^throw[]. Ещё не решил, какой вариант выбрать. С ^throw[] как я представляю будет что-то подобное:
^try{
	$parts[^uri.split[/]]
	$current_id[0]
	^parts.menu{
		^if(^items.locate($items.dir eq $parts.piece && $items.parent_id eq $current_id)){ 
			$current_id[$items.id] 
		}{ 
			^throw[file.not_found;$request:uri] 
		} 
	}

}{ 
	^if($exception.type eq file.not_found){ 
		$exception.handled(1) 
		$response:location[/404.html] 
	} 
} 
хотя ваш вариант с ^while() выглядит интереснее...