안녕하세요 럭키입니디 ㅏ.. #_#;;

많은분들이 메뉴와 관련된부분을 어려워 하시는거 같습니다.

1차메뉴부터..
<!-- main_menu 1차 시작 -->
<!--@foreach($main_menu->list as $key => $val)-->
<!--@if($val['text'])--> ①
<!--@if($val['selected'])--> ②
{@ $menu_1st = $val }
<!--@end--> ②
// 밑에 li안에있는 IF가 ③ <li <!--@if($val['selected'])-->class="on"<!--@end-->><a href="{$val['href']}" <!--@if($val['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end-->>{$val['text']}</a></li> <!--@end--> ③
<!--@end--> ①
<!-- main_menu 1차 끝 -->
아닐수도있지만 전 제나름대로의 방식대로 이해했습니다. .....

일단 제나름대로 해석해보면..
메뉴정보를 가져와서, $val에 가져오고
①IF 로 $val['text'] 1차메뉴가 하나이상 있을때 밑에부분을 실행하란 말입니다
((-------IMAGE-------))
이안에서 또 ② If로 $val['selected'] 현재 메뉴가 선택되어있을때(만약 공지게시판에 접속했다면 공지게시판이 선택)
$menu_1st 에 $val값을 대입, ② End문으로 ② IF를 닫습니다.
그리고
<li <!--@if($val['selected'])-->class="on"<!--@end-->><a href="{$val['href']}" <!--@if($val['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end-->>{$val['text']}</a></li>

CSS에서 지정해놓았던 <li 에 ③ IF $val['selected'] 메뉴가 선택되어있다면 class="on" 이란 클래스를 지정하고 End
a href .. 링크는 메뉴관리에서 설정한 링크를 지정하고, 그뒷부분은 메뉴관리에서 새창열기가 체크?을경우 새창으로 띄워줍니다
{$val['text']) 는 메뉴이름을 보여줍니다.
그리고 맨밑에 ① IF를 닫습니다.
1차 메뉴 끝
즉 1차메뉴가 한개이상 있을경우, <li><a href="링크">메뉴항목</a></li>
이렇게 반복적으로 출력한단 말이고, 현재 메뉴일경우 class="on"이란 클래스를 지정해줌으로써
현재 위치한 메뉴에 CSS를이용하여 효과를 주는것입니다.

----------------------------
<!-- 왼쪽 2차 메뉴 -->
<!--@if($menu_1st)-->
<ol id="lnb">
{@ $idx = 1 }
<!--@foreach($menu_1st['list'] as $key => $val)--><!--@if($val['text'])-->
<li <!--@if($val['selected'])-->class="on"<!--@end-->><a href="{$val['href']}" <!--@if($val['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end-->>{$val['text']}</a> <!-- main_menu 3차 시작 -->
<!--@if($val['list'])-->
<ul>
<!--@foreach($val['list'] as $k => $v)--><!--@if($v['text'])-->
<li <!--@if($v['selected'])-->class="on"<!--@end-->><a href="{$v['href']}" <!--@if($v['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end-->>{$v['text']}</a></li>
<!--@end--><!--@end-->
</ul>
<!--@end-->
</li>
{@$idx++}
<!--@end--><!--@end-->
</ol>
<!--@end-->
2차메뉴까지만 이해한다면 3차부터는 그대로 응용하시면 가능한 문제입니다.
일단 2차메뉴는 1차메뉴의 하위메뉴입니다.
그러므로 ① IF에서 1차메뉴가 있을? 밑에 문법을 실행합니다.
$idx에 1을 대입하고, $menu_1st , $key 메뉴정보를 $val에 가져옵니다.
여기서 보니 아마 $key는 2차메뉴정보가 있나봅니다.
② If로 val['text'] 2차메뉴가 있을때, 밑에 문법들을 실행하라..이말이죠
아까 1차메뉴와 똑같이, 메뉴가 선택되었을때 class="on" 을 지정하고,
링크나 새창 , 메뉴출력 .. 다 1차와 똑같이 되어있죠~
즉.. 무슨말이냐

저거 진하게 강조한부분만 변경하시면, 4차메뉴나 5차메뉴도 가져오실수있습니다.
음.. 그럼 ZBXE공식사이트에있는걸 기준으로 4차메뉴 추가한 예제를 보여드릴게요

<!-- main_menu 2차 시작 -->
<!--@if($menu_1st)-->
<ol id="lnb">
{@ $idx = 1 }
<!--@foreach($menu_1st['list'] as $key => $val)--><!--@if($val['text'])-->
<li <!--@if($val['selected'])-->class="on"<!--@end-->><a href="{$val['href']}" <!--@if($val['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end-->>{$val['text']}</a> <!-- main_menu 3차 시작 -->
<!--@if($val['list'])-->
<ul>
<!--@foreach($val['list'] as $k => $v)--><!--@if($v['text'])-->
<li <!--@if($v['selected'])-->class="on"<!--@end-->><a href="{$v['href']}" <!--@if($v['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end-->>{$v['text']}</a></li>
<!-- main_menu 4차 시작 -->
<!--@if($v['list'])-->
<ul>
<!--@foreach($v['list'] as $k => $v4)--><!--@if($v4['text'])-->
<li <!--@if($v4['selected'])-->class="laa"<!--@end-->><a href="{$v4['href']}" <!--@if($v4['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end-->>{$v4['text']}</a></li>
<!--@end--> <!--@end--> <!--@end--> <!--@end-->
</ul>
<!--@end--><!--@end-->
</li>
{@$idx++}
<!--@end--><!--@end-->
</ol>
<!--@end-->
보시면 아시겠지만 3차메뉴에서는 2차메뉴인 val['list'] 에서 가져온것을 $v에 담아두고있습니다.
4차에서는 이걸이용해 3차메뉴인 $v['list'] 에서 가져온것을 $v4에 담아두고 이용하면 잘됩니다.
만약 5차메뉴도 추가하고싶다면 4차메뉴인 $v4['list'] 에서 가져와서 이용하시면 되겠죠..??

.......
쓰고보니까 글도 너무 복잡하고 길어서 죄송합니다 .ㅜ __ㅜ
모르거나 이해안가시는것은 댓글이나 쪽지로 주세요 __ ....

★ 제가 위에서 소스해석한게 틀릴수도있습니다. 하지만 무작정 붙여넣어서 쓰는것보단 이렇게라도 이해하고 쓰면 쉽게 할수있습니다.
by Anna 안나 2008. 6. 1. 20:39