parser

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

 

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

Родители и дети

Mizter Egoist 24.06.2014 15:18

Помогите, наставьте на путь истинный!
Вот что есть:
<div>^levelOne.menu{
		^if($levelOne.url eq $checkURL){
			$levelOne.title<br>
		}{
			<a href="$levelOne.url">$levelOne.title</a><br>
		}
	}</div><br>
	<div>^levelTwo.menu{
		^if($levelTwo.url eq $checkURL){
			$levelTwo.title<br>
		}{
			<a href="$levelTwo.url">$levelTwo.title</a><br>
		}
	}</div><br>
	<div>^levelThree.menu{
		^if($levelThree.url eq $checkURL){
			$levelThree.title<br>
		}{
			<a href="$levelThree.url">$levelThree.title</a><br>
		}
	}</div><br>
	<div>^levelFour.menu{
		^if($levelFour.url eq $checkURL){
			$levelFour.title<br>
		}{
			<a href="$levelFour.url">$levelFour.title</a><br>
		}
	}</div><br>
^connect[$connect_string]{
	$items[^table::sql{SELECT id, parent, block, title, url, cID FROM controller}]
	$l1Item[^items.select($items.parent == 0)]
	^if($l1Item){
		$l1[^l1Item.menu{$l1Item.id}[,]]
		$l2Item[^table::sql{SELECT id, parent, block, title, url, cID FROM controller WHERE parent IN ($l1)}]
		^if($l2Item){
			$l2[^l2Item.menu{$l2Item.id}[,]]
			$l3Item[^table::sql{SELECT id, parent, block, title, url, cID FROM controller WHERE parent IN ($l2)}]
			^if($l3Item){
				$l3[^l3Item.menu{$l3Item.id}[,]]
				$l4Item[^table::sql{SELECT id, parent, block, title, url, cID FROM controller WHERE parent IN ($l3)}]
			}{}
		}{}
	}{}
}
$levelOne[^table::create{url	id	title}]
^l1Item.menu{
	^levelOne.append{^gURL[$l1Item.id]	$l1Item.id	$l1Item.title}
}
$levelTwo[^table::create{url	id	title}]
^l2Item.menu{
	^levelTwo.append{^gURL[$l2Item.id]	$l2Item.id	$l2Item.title}
}
$levelThree[^table::create{url	id	title}]
^l3Item.menu{
	^levelThree.append{^gURL[$l3Item.id]	$l3Item.id	$l3Item.title}
}
$levelFour[^table::create{url	id	title}]
^l4Item.menu{
	^levelFour.append{^gURL[$l4Item.id]	$l4Item.id	$l4Item.title}
}
Код получает сначала родителей, потом их детей, проверяет полученное значение и адрес страницы, если одинаково, то делаем, что хотим.
Еще не дошел до того момента, когда нужно будет формировать древо меню в зависимости от положения пользователя на определенной странице.
Код не расширяем и если будет 10 или хотя бы 5-6 уровень вложенности, то придется дописывать еще строки.
Мой к вам вопрос, как примерно сделать гибкий код, который будет формировать ссылки сначала родителей, потом детей на основании заданного родителя.
Например если страница главная, показываются родители, если второй уровень, то родитель и второй уровень, если третий, то второй и первый и третий и т.д.
Для формирования всех ссылок без древовидной структуры использовал следующее:
@gURL[id][item;url;pID;parentID;mID]
$mID($id)
$pID{
	$item[^items.select($items.id == $mID)]
	$parentID($item.parent)
}
$pID
^while($parentID){
    $url[$item.url/$url]
    $mID($item.parent)
    $pID
}
$url[$item.url/$url]
$result[/$url]