레이아웃을 만들다가... 메뉴 1차... 2차... 3차... 4차... 분석에 들어갔다.
원리는 아래와 같다~ ^^
<ul> <!--@foreach($main_menu->list as $key => $val1)--> <li><span>{$val1['text']}</span> <ul> <!--@if($val1['list'])--> <!--@foreach($val1['list'] as $key => $val2)--> <li>{$val2['text']}</li> <ul> <!--@if($val2['list'])--> <!--@foreach($val2['list'] as $key => $val3)--> <li>{$val3['text']}</li> <ul> <!--@if($val3['list'])--> <!--@foreach($val3['list'] as $key => $val4)--> <li>{$val4['text']}</li> <ul> <!--@if($val4['list'])--> <!--@foreach($val4['list'] as $key => $val5)--> <li>{$val5['text']}</li> <!--@end--> <!--@end--> </ul> <!--@end--> <!--@end--> </ul> <!--@end--> <!--@end--> </ul> <!--@end--> <!--@end--> </ul> </li> <!--@end--> </ul>
위의 구조를 보니... 먼가 반복되고 있다는 생각이 들지 않는가?
메뉴를 부를때 맨 처음 $main_menu->list 에서 시작~
$val1['list'] 있으면 배열이 있다는 이야기로 foreach 구문으로 뽑아는 구조이다~
위의 소스는 그냥 단순히 메뉴를 출력만 해주는 기능일 뿐이다~ (sitemap 만들때 쓰면 되겠군요^^)
실제 메뉴는 링크가 있는지 없는지를 구분하고
링크가 있을경우 선택되었는지 안되었는지를 구분하는
소스가 추가 되어야 하겠다~
왼쪽 메뉴 출력방법은 아래와 같다. 방법은 위와 비슷하지만...
$menu_1st 변수 선언을 해서... 선택된 메뉴가 있는 쪽만 출력하는 것이다~ OK?
<h2>{$menu_1st['text']}</h2> <!--@if($menu_1st)--> <ul> {@ $idx = 1 } <!--@foreach($menu_1st['list'] as $key => $val_1st)--> <li <!--@if($val_1st['selected'])-->class="on"<!--@end-->><a href="{$val_1st['href']}" <!--@if($val_1st['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end-->>{$val_1st['text']}</a> <!--@if($val_1st['list'])--> <ul> <!--@foreach($val_1st['list'] as $key => $val_2st)--> <li <!--@if($val_2st['selected'])-->class="on"<!--@end-->><a href="{$val_2st['href']}" <!--@if($val_2st['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end-->>{$val_2st['text']}</a></li> <!--@end--> </ul> <!--@end--> </li> {@$idx++} <!--@end--> </ul> <!--@end-->