웹마스터 팁

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

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

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

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

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

제목 글쓴이 날짜
1.2.0 설치 후 페이지모듈에 위젯사용시 문제 [2] Digitalife 2009.03.17
브라우저 크기에 따라 본문 가로 크기 자동 조절 [1] 개돌 2009.03.18
미국 야후 호스팅 쓰시는 분들 보세요(이미지 퍼미션) 텍사수 2009.03.21
제로보드 XE나 개인 블로그에 GPS 로그(궤적)를 나타낸 구글맵 삽입하기 상오기 2009.03.21
1.2.0 업뎃후 위젯 문제 [1] ♡不明♡ 2009.03.22
각종 좌절 금지 그림들 [2] file winter548 2009.03.23
xe 설치시 다음과 같은 오류가 생깁니다. Seung Hur 2009.04.02
위지윅 테이블 컴포넌트 (테이블 수정 기능) [3] file 개돌 2009.04.02
게시판형태를 달력게시판으로 못하나요? [1] file 오늘하루는느느느 2009.04.09
해당 Cafe 회원에 가입후 Cafe 회원목록에 나타나지 않음...... 뉴욕에서 2009.04.16
XpressEngine 1.2.1 r6096 트리거 목록 [2] [1] mooo 2009.04.13
각 메뉴 옆에 게시물 갯수 표시하기 [6] coolsushi 2007.08.19
미지원 언어 추가하기(기존에꺼 하나 골라서 수정하는 방식으로) 만쓰별(정만) 2009.01.23
4차 서브메뉴 사용하기!! [4] [1] file 럭키587 2007.08.17
zbXE 1.0.6 일본어 팩 입니다~ [8] file 쿠로쿠마 2008.10.15
플래시 BGM 음악 제로보드에 넣는 방법 file 푸른커튼 2008.10.29
Mysql 4.0 버전에서 xe 설치해서 사용하기 [3] amamamam.myid.net 2007.08.13
다음카페에 끊김없이 음악나오게 하기 푸른커튼 2008.09.06
음악넣는 BGM코드 70종류 입니다 [1] 푸른커튼 2008.08.25
위지웍 에디터 웹폰트 사용하기 [6] 최지연 2007.08.17