웹마스터 팁

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

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

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차메뉴가 하나이상 있을때 밑에부분을 실행하란 말입니다

이안에서 또 ② 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'] 에서 가져와서 이용하시면 되겠죠..??

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

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

제목 글쓴이 날짜
제로보드 XE - 오토셋에 설치하기 [11] file 차오이 2007.08.11
윈도우에서도 svn을 이용하자.. [2] LSH5243 2007.08.13
SVN 자료 바로바로 업데이트 해보자. [3] DroArc 2007.08.13
서버에서 zeroboard XE 쉽게 다운로드 받고 업데이트 하기 [2] Dr.Mabin 2007.08.13
Mysql 4.0 버전에서 xe 설치해서 사용하기 [3] amamamam.myid.net 2007.08.13
좌측 메뉴 하단에 애드센스를 탑재해 보자! [5] migojarad.myid.net 2007.08.13
로그인 안되시는분들 참고 [8] 화니478 2007.08.14
로고 만들기 귀찮을떄 [2] 정지훈308 2007.08.14
포트 변경 후 XE 사용이 안 되면 류현留賢 2007.08.14
상단 로고부분 공간 늘릴려면... [3] 똑디 2007.08.14
설치 후 로그인 불가능 문제 해결방법 [14] 엘핀라즈 2007.08.14
최신글 뽑아오기 - 간단한 방법 [3] file Eric2ya 2007.08.14
최근글 및 카운터 로그인등등.. 모르시는분있을꺼라고 생각해서올려요 [7] file 장재혁512 2007.08.15
공백으로 보이는 문제 해결 방법 (프레임, 메타태그, 포워딩등) [21] ZK™ 2007.08.15
zbXE게시판 상단 내용처럼 꾸미기... [12] 이승수961 2007.08.15
외부에서 회원정보 불러오기 [5] 미오유 2007.08.15
공개 소스 웹 디자인 [6] 나라비 2007.08.15
음악플레이어를 달고싶으세요? [13] 부찬™ 2007.08.16
사이트 주소로 접속했을때 XE 폴더로 이동하기 팁 [42] 베니 2007.08.16
4차 서브메뉴 사용하기!! [4] [1] file 럭키587 2007.08.17