3차 분류 메인메뉴 구성하기

3차 분류 메인메뉴 구성하기

QA

3차 분류 메인메뉴 구성하기

본문


<nav id="gnb">
        <h2>메인메뉴</h2>
        <div class="gnb_wrap">
            <ul id="gnb_1dul">
                <li class="gnb_1dli gnb_mnal"><button type="button" class="gnb_menu_btn"><i class="fa fa-bars" aria-hidden="true"></i><span class="sound_only">전체메뉴열기</span></button></li>
                <?php
                $sql = " select *
                            from {$g5['menu_table']}
                            where me_use = '1'
                              and length(me_code) = '2'
                            order by me_order, me_id ";
                $result = sql_query($sql, false);
                $gnb_zindex = 999; // gnb_1dli z-index 값 설정용
                $menu_datas = array();
                for ($i=0; $row=sql_fetch_array($result); $i++) {
                    $menu_datas[$i] = $row;
                    $sql2 = " select *
                                from {$g5['menu_table']}
                                where me_use = '1'
                                  and length(me_code) = '4'
                                  and substring(me_code, 1, 2) = '{$row['me_code']}'
                                order by me_order, me_id ";
                    $result2 = sql_query($sql2);
                    for ($k=0; $row2=sql_fetch_array($result2); $k++) {
                        $menu_datas[$i]['sub'][$k] = $row2;

// 아래부터 전체 메뉴보기입니다. 
     $sql3 = " select *
                                from {$g5['menu_table']}
                                where me_use = '1'
                                  and length(me_code) = '6'
                                  and substring(me_code, 1, 4) = '{$row2['me_code']}'
                                order by me_order, me_id ";
                    $result3 = sql_query($sql3);
     for ($j=0; $row3=sql_fetch_array($result3); $j++) {
                        $menu_datas[$k]['sub'][$j] = $row3;
      //echo $menu_datas[$k]['sub'][$j];
                    }
//여기까지 추가

                    }
                }
   
                   
               
                $i = 0;
                foreach( $menu_datas as $row ){
                    if( empty($row) ) continue;
                ?>
                <li class="gnb_1dli" style="z-index:<?php echo $gnb_zindex--; ?>">
                    <a href="<?php echo $row['me_link']; ?>" target="_<?php echo $row['me_target']; ?>" class="gnb_1da"><?php echo $row['me_name'] ?></a>
                    <?php
                    $k = 0;
                    foreach( (array) $row['sub'] as $row2 ){
                        if( empty($row2) ) continue;
                        if($k == 0)
                            echo '<span class="bg">하위분류</span><ul class="gnb_2dul">'.PHP_EOL;
                    ?>
                        <li class="gnb_2dli"><a href="<?php echo $row2['me_link']; ?>" target="_<?php echo $row2['me_target']; ?>" class="gnb_2da"><?php echo $row2['me_name'] ?></a>
      
      
      
     <?php //여기 부터 드롭다운 메뉴 추가
                    $j = 0;
                    foreach( (array) $row['sub'] as $row3 ){
                        if( empty($row3) ) continue;
                        if($j == 0)
                            echo '<ul class="gnb_2dul">'.PHP_EOL;
                    ?>
                        <li class="gnb_2dli"><a href="<?php echo $row3['me_link']; ?>" target="_<?php echo $row3['me_target']; ?>" class="gnb_2da"><?php echo $row3['me_name'] ?></a></li>
                    <?php
                    $j++;
                    }   //end foreach $row3
                    if($j > 0)
                        echo '</ul>'.PHP_EOL;
                   //여기까지 추가   ?>
 
      
      
      
      
      
      
      </li>
                    <?php
                    $k++;
                    }   //end foreach $row2
                    if($k > 0)
                        echo '</ul>'.PHP_EOL;
                    ?>
                </li>
                <?php
                $i++;
                }   //end foreach $row
                if ($i == 0) {  ?>
                    <li class="gnb_empty">메뉴 준비 중입니다.<?php if ($is_admin) { ?> <a href="<?php echo G5_ADMIN_URL; ?>/menu_list.php">관리자모드 > 환경설정 > 메뉴설정</a>에서 설정하실 수 있습니다.<?php } ?></li>
                <?php } ?>
            </ul>

            <div id="gnb_all">
                <h2>전체메뉴</h2>
                <ul class="gnb_al_ul">
                    <?php
                   
                    $i = 0;
                    foreach( $menu_datas as $row ){
                    ?>
                    <li class="gnb_al_li">
                        <a href="<?php echo $row['me_link']; ?>" target="_<?php echo $row['me_target']; ?>" class="gnb_al_a"><?php echo $row['me_name'] ?></a>
                        <?php
                        $k = 0;
                        foreach( (array) $row['sub'] as $row2 ){
                            if($k == 0)
                                echo '<ul>'.PHP_EOL;
                        ?>
                            <li><a href="<?php echo $row2['me_link']; ?>" target="_<?php echo $row2['me_target']; ?>"><i class="fa fa-caret-right" aria-hidden="true"></i> <?php echo $row2['me_name'] ?></a>
      
      
      
      
      <?php //여기부터 추가 했으나 상관없는 코드인듯 ㅠ
                        $j = 0;
                        foreach( (array) $row2['sub'] as $row3 ){
                            if($j == 0)
                                echo '<ul>'.PHP_EOL;
      ?>
      <li><a href="<?php echo $row3['me_link']; ?>" target="_<?php echo $row3['me_target']; ?>"><i class="fa fa-caret-right" aria-hidden="true"></i> <?php echo $row3['me_name'] ?></a>
      </li>
                        <?php
                        $j++;
                        }   //end foreach $row3
      if($j > 0)
                            echo '</ul>'.PHP_EOL;
                       //여기까지 추가  ?>
      
       
       
       </li>
                        <?php
                        $k++;
                        }   //end foreach $row2
                        if($k > 0)
                            echo '</ul>'.PHP_EOL;
                        ?>
                    </li>
                    <?php
                    $i++;
                    }   //end foreach $row
                    if ($i == 0) {  ?>
                        <li class="gnb_empty">메뉴 준비 중입니다.<?php if ($is_admin) { ?> <br><a href="<?php echo G5_ADMIN_URL; ?>/menu_list.php">관리자모드 > 환경설정 > 메뉴설정</a>에서 설정하실 수 있습니다.<?php } ?></li>
                    <?php } ?>
                </ul>
                <button type="button" class="gnb_close_btn"><i class="fa fa-times" aria-hidden="true"></i></button>
            </div>
        </div>
    </nav>

 

위와 같이 하면 제대로 작동이 안되서요 어떻게 하면 3차 분류 메뉴가 나타날수 있을까요?

반나절 헤메다 고수님께 부탁드립니다. 아무나 도와 주시면 감사하겠습니다.

위 원본 소스코드는 그누보드 5.3 기본테마 head.php  파일에 있는 메뉴입니다.

3차 분류는 이미 정상으로 추가된 상태입니다. 

이 질문에 댓글 쓰기 :

답변 3

제가 사용중인 4차메뉴 부분입니다. 참고가 될지요..

           <?php
            $sql = " select *
                        from {$g5['menu_table']}
                        where me_use = '1'
                          and length(me_code) = '2'
                        order by me_order, me_id ";
            $result = sql_query($sql, false);
            $gnb_zindex = 999; // gnb_1dli z-index 값 설정용

            for ($i=0; $row=sql_fetch_array($result); $i++) {
            ?>
    <?php if ($txt == $row['me_name']) { ?><li class="gnb_1dli" style="z-index:<?php echo $gnb_zindex--; ?>">
                <a href="<?php echo $row['me_link']; ?>" target="_<?php echo $row['me_target']; ?>" class="gnb_1da" style="color:#fa6000"><?php echo $row['me_name'] ?></a>
    <?php } else { ?>
    <li class="gnb_1dli" style="z-index:<?php echo $gnb_zindex--; ?>">
                <a href="<?php echo $row['me_link']; ?>" target="_<?php echo $row['me_target']; ?>" class="gnb_1da"><?php echo $row['me_name'] ?></a><?php } ?>
                <?php
                $sql2 = " select *
                            from {$g5['menu_table']}
                            where me_use = '1'
                              and length(me_code) = '4'
                              and substring(me_code, 1, 2) = '{$row['me_code']}'
                            order by me_order, me_id ";
                $result2 = sql_query($sql2);

                for ($k=0; $row2=sql_fetch_array($result2); $k++) {
                    if($k == 0)
                        echo '<ul class="gnb_2dul">'.PHP_EOL;
                ?>
                    <li class="gnb_2dli"><a href="<?php echo $row2['me_link']; ?>" target="_<?php echo $row2['me_target']; ?>" class="gnb_2da"><img src="../img/btn_next.gif"> <?php echo $row2['me_name'] ?></a>
     <?php
     $sql3 = " select *
        from {$g5['menu_table']}
        where me_use = '1'
          and length(me_code) = '6'
          and substring(me_code, 1, 4) = '{$row2['me_code']}'
        order by me_order, me_id ";
     $result3 = sql_query($sql3);
     $num3 = sql_num_rows($result3);
     if($num3>0){
      echo '<ul class="gnb_3dul">'.PHP_EOL;
      while($row3=sql_fetch_array($result3)){
     ?>
     <li class="gnb_3dli"><a href="<?php echo $row3['me_link']; ?>" target="_<?php echo $row3['me_target']; ?>" class="gnb_3da"><img src="../img/btn_next.gif"> <?php echo $row3['me_name'] ?></a>
     <?php
     $sql4 = " select *
        from {$g5['menu_table']}
        where me_use = '1'
          and length(me_code) = '8'
          and substring(me_code, 1, 6) = '{$row3['me_code']}'
        order by me_order, me_id ";
     $result4 = sql_query($sql4);
     $num4 = sql_num_rows($result4);
     if($num4>0){
      echo '<ul class="gnb_4dul">'.PHP_EOL;
      while($row4=sql_fetch_array($result4)){
     ?>
     <li class="gnb_4dli"><a href="<?php echo $row4['me_link']; ?>" target="_<?php echo $row4['me_target']; ?>" class="gnb_4da"><img src="../img/btn_next.gif"> <?php echo $row4['me_name'] ?></a></li>
     <?php
     }
     ?>
    </li>    
    <?php
                }   //end foreach $row4
                if($num4 > 0)
                    echo '</ul>'.PHP_EOL;
                ?>
            </li>
            <?php
  }   //end foreach $row3
            ?>
            </li>
    <?php
  }   //end foreach $row3
     if($num3 > 0)
                    echo '</ul>'.PHP_EOL;
    ?>
            </li>
            <?php
  }   //end foreach $row2
   if($k > 0)
            echo '</ul>'.PHP_EOL;
    ?>
            </li>
            <?php
  }   //end foreach $row

            if ($i == 0) {  ?>
                <li id="gnb_empty">메뉴 준비 중입니다.<?php if ($is_admin) { ?> <br><a href="<?php echo G5_ADMIN_URL; ?>/menu_list.php">관리자모드 > 환경설정 > 메뉴설정</a>에서 설정하실 수 있습니다.<?php } ?></li>
            <?php } ?>

전체메뉴 부분(<ul class="gnb_al_ul">)

        <?php
            $sql = " select *
                        from {$g5['menu_table']}
                        where me_mobile_use = '1'
                          and length(me_code) = '2'
                        order by me_order, me_id ";
            $result = sql_query($sql, false);
            for($i=0; $row=sql_fetch_array($result); $i++) {
            $sql2 = " select *
              from {$g5['menu_table']}
                        where me_mobile_use = '1'
                          and length(me_code) = '4'
                          and substring(me_code, 1, 2) = '{$row['me_code']}'
                        order by me_order, me_id ";
            $result2 = sql_query($sql2);
     $row['cnt'] = _num_rows($result2);
     ?>
     <li class="gnb_1dli<?php echo ($row['cnt'])?' menu-item-has-children':'';?>">
  <a href="<?php echo $row['me_link']; ?>" target="_<?php echo $row['me_target']; ?>"><?php echo $row['me_name'] ?></a>
  <?php
  for ($k=0; $row2=sql_fetch_array($result2); $k++) {
   $sql3 = " select *
    from {$g5['menu_table']}
    where me_use = '1'
      and length(me_code) = '6'
      and substring(me_code, 1, 4) = '{$row2['me_code']}'
    order by me_order, me_id ";
   $result3 = sql_query($sql3);
   $row2['cnt'] = _num_rows($result3);
  if($k == 0)
   echo '<ul class="sub-menu">'.PHP_EOL;
  ?>
  <li class="gnb_2dli<?php echo ($row2['cnt'])?' menu-item-has-children':'';?>">
   <a href="<?php echo $row2['me_link']; ?>" target="_<?php echo $row2['me_target']; ?>"><?php echo $row2['me_name'] ?></a>
   <?php
   for ($s=0; $row3=sql_fetch_array($result3); $s++) {

    $tql4 = " select *
     from {$g5['menu_table']}
     where me_use = '1'
       and length(me_code) = '8'
       and substring(me_code, 1, 6) = '{$row3['me_code']}'
     order by me_order, me_id ";
    $result4 = sql_query($tql4);

    $row3['cnt'] = _num_rows($result4);

    if($s == 0)
     echo '<ul class="sub-menu">'.PHP_EOL;
       ?>
    <li class="gnb_3dli<?php echo ($row3['cnt'])?' menu-item-has-children':'';?>">
     <a href="<?php echo $row3['me_link']; ?>" target="_<?php echo $row3['me_target']; ?>"><?php echo $row3['me_name'] ?></a>
    <?php
     for ($t=0; $row4=sql_fetch_array($result4); $t++) {
     if($t == 0)
      echo '<ul class="sub-menu">'.PHP_EOL;
    ?>
     <li class="gnb_4dli">
      <a href="<?php echo $row4['me_link']; ?>" target="_<?php echo $row4['me_target']; ?>"><?php echo $row4['me_name'] ?></a>
     </li>
     <?php
     }
     if($t > 0)
      echo '</ul>'.PHP_EOL;
     ?>
     </li>
     <?php
     }
    if($s > 0)
    echo '</ul>'.PHP_EOL;
    ?>
    </li>
     <?php
     }
     if($k > 0)
      echo '</ul>'.PHP_EOL;
     ?>
    </li>
    <?php
    }
    if ($i == 0) {  ?>
     <li class="gnb_1dli"><?php if ($is_admin) { ?> <a href="<?php echo G5_ADMIN_URL; ?>/menu_list.php">관리자모드 > 환경설정 > 메뉴설정</a><?php }else{ ?><a href="<?php echo G5_URL ?>">메뉴 준비 중입니다.</a><?php } ?></li>
    <?php } ?>

들레아빠님 혹시...
제가 적용을 해보니 잘되는데 css 부분 도 알려주실수 있으신가요?
예를들어 gnb_1dli 는 있으나 gnb_3dli  는 없고..menu-item-has-children  이런 것도 없고해서
혹시나 부탁드려봅니다. ^^;; 쪽지를 공개 안하셔서 보내드리지 못하고 여기에 올립니다.

<style>
.gnb_3dli{border-top:1px solid #253dbe}
.gnb_3dli:first-child{border:0}
.gnb_4dli{border-top:1px solid #253dbe}
.gnb_4dli:first-child{border:0}
.gnb_2dul {display:none;position:absolute;top:50px;min-width:180px;background:#1a30a7;padding: 0;-webkit-box-shadow: 0 1px 5px rgba(0,0,0,0.1);-moz-box-shadow:  0 1px 5px rgba(0,0,0,0.1);box-shadow: 0 1px 5px rgba(0,0,0,0.1);}
.gnb_3da {display:block;padding:0 30px;line-height:40px;color:#c3cbf7;text-align:left;text-decoration:none}
a.gnb_3da:hover{background:#0e2080;-moz-transition: all 0.3s ease-out;-o-transition: all 0.3s ease-out;transition: all 0.3s ease-out;}
.gnb_4da {display:block;padding:0 50px;line-height:40px;color:#c3cbf7;text-align:left;text-decoration:none}
a.gnb_4da:hover{background:#0e2080;-moz-transition: all 0.3s ease-out;-o-transition: all 0.3s ease-out;transition: all 0.3s ease-out;}
</style>

윗쪽에 추가하세요.

default.css는 그대로 두고요.

<모바일쪽>

<style>
.gnb_3dul {display:none;}
.gnb_3da {border-bottom:1px solid #2d2d2d;background:url(../img/btn_next.gif) no-repeat 21px 17px;margin-left:40px}
.gnb_4dul {display:none;}
.gnb_4da {border-bottom:1px solid #2d2d2d;background:url(../img/btn_next.gif) no-repeat 21px 17px;margin-left:50px}
</style>
        <?php
            $sql = " select *
                        from {$g5['menu_table']}
                        where me_mobile_use = '1'
                          and length(me_code) = '2'
                        order by me_order, me_id ";
            $result = sql_query($sql, false);
            for($i=0; $row=sql_fetch_array($result); $i++) {
            $sql2 = " select *
              from {$g5['menu_table']}
                        where me_mobile_use = '1'
                          and length(me_code) = '4'
                          and substring(me_code, 1, 2) = '{$row['me_code']}'
                        order by me_order, me_id ";
            $result2 = sql_query($sql2);
     $row['cnt'] = _num_rows($result2);
     ?>
     <li class="gnb_1dli<?php echo ($row['cnt'])?' menu-item-has-children':'';?>">
  <a href="<?php echo $row['me_link']; ?>" target="_<?php echo $row['me_target']; ?>" class="gnb_1da"><?php echo $row['me_name'] ?></a>
  <?php
  for ($k=0; $row2=sql_fetch_array($result2); $k++) {
   $sql3 = " select *
    from {$g5['menu_table']}
    where me_use = '1'
      and length(me_code) = '6'
      and substring(me_code, 1, 4) = '{$row2['me_code']}'
    order by me_order, me_id ";
   $result3 = sql_query($sql3);
   $row2['cnt'] = _num_rows($result3);
  if($k == 0)
   echo '<ul class="sub-menu">'.PHP_EOL;
  ?>
  <li class="gnb_2dli<?php echo ($row2['cnt'])?' menu-item-has-children':'';?>">
   <a href="<?php echo $row2['me_link']; ?>" target="_<?php echo $row2['me_target']; ?>" class="gnb_2da"><?php echo $row2['me_name'] ?></a>
   <?php
   for ($s=0; $row3=sql_fetch_array($result3); $s++) {

    $tql4 = " select *
     from {$g5['menu_table']}
     where me_use = '1'
       and length(me_code) = '8'
       and substring(me_code, 1, 6) = '{$row3['me_code']}'
     order by me_order, me_id ";
    $result4 = sql_query($tql4);

    $row3['cnt'] = _num_rows($result4);

    if($s == 0)
     echo '<ul class="sub-menu">'.PHP_EOL;
       ?>
    <li class="gnb_3dli<?php echo ($row3['cnt'])?' menu-item-has-children':'';?>">
     <a href="<?php echo $row3['me_link']; ?>" target="_<?php echo $row3['me_target']; ?>" class="gnb_3da"><img src="../img/btn_next.gif"> <?php echo $row3['me_name'] ?></a>
    <?php
     for ($t=0; $row4=sql_fetch_array($result4); $t++) {
     if($t == 0)
      echo '<ul class="sub-menu">'.PHP_EOL;
    ?>
     <li class="gnb_4dli">
      <a href="<?php echo $row4['me_link']; ?>" target="_<?php echo $row4['me_target']; ?>" class="gnb_4da"><img src="../img/btn_next.gif"> <?php echo $row4['me_name'] ?></a>
     </li>
     <?php
     }
     if($t > 0)
      echo '</ul>'.PHP_EOL;
     ?>
     </li>
     <?php
     }
    if($s > 0)
    echo '</ul>'.PHP_EOL;
    ?>
    </li>
     <?php
     }
     if($k > 0)
      echo '</ul>'.PHP_EOL;
     ?>
    </li>
    <?php
    }
    if ($i == 0) {  ?>
     <li class="gnb_1dli"><?php if ($is_admin) { ?> <a href="<?php echo G5_ADMIN_URL; ?>/menu_list.php">관리자모드 > 환경설정 > 메뉴설정</a><?php }else{ ?><a href="<?php echo G5_URL ?>">메뉴 준비 중입니다.</a><?php } ?></li>
    <?php } ?>
   <?php if(!G5_IS_MOBILE) { ?>
   <button type="button" class="gnb_close1_btn"><i class="fa fa-bars" aria-hidden="true"></i></button>
   </li>
   <?php } ?>

적용을 해 보았습니다. 그랬더니 마우스 오버시에 3차 메뉴가 그대로 2차 메뉴 아래로 다 나타나는건 css 가 아니라 js 문제일까요? 전체 메뉴 말구요~ 드롭다운메뉴에서요 ^^;

<style>
.gnb_3dli{border-top:1px solid #253dbe}
.gnb_3dli:first-child{border:0}
.gnb_4dli{border-top:1px solid #253dbe}
.gnb_4dli:first-child{border:0}

.gnb_2dul {display:none;position:absolute;top:50px;min-width:200px;background:#1a30a7;padding: 0;-webkit-box-shadow: 0 1px 5px rgba(0,0,0,0.1);-moz-box-shadow:  0 1px 5px rgba(0,0,0,0.1);box-shadow: 0 1px 5px rgba(0,0,0,0.1);}
.gnb_3dul {display:none;position:absolute;top:50px;min-width:200px;background:#1a30a7;padding: 0;-webkit-box-shadow: 0 1px 5px rgba(0,0,0,0.1);-moz-box-shadow:  0 1px 5px rgba(0,0,0,0.1);box-shadow: 0 1px 5px rgba(0,0,0,0.1);}
.gnb_4dul {display:none;position:absolute;top:50px;min-width:200px;background:#1a30a7;padding: 0;-webkit-box-shadow: 0 1px 5px rgba(0,0,0,0.1);-moz-box-shadow:  0 1px 5px rgba(0,0,0,0.1);box-shadow: 0 1px 5px rgba(0,0,0,0.1);}
.gnb_2da {display:block;padding:0 10px;line-height:50px;color:#c3cbf7;text-align:left;text-decoration:none}
.gnb_3da {display:block;padding:0 10px;line-height:50px;color:#c3cbf7;text-align:center;text-decoration:none}
a.gnb_3da:hover{background:#0e2080;-moz-transition: all 0.3s ease-out;-o-transition: all 0.3s ease-out;transition: all 0.3s ease-out;}
.gnb_4da {display:block;padding:0 10px;line-height:50px;color:#c3cbf7;text-align:center;text-decoration:none}
a.gnb_4da:hover{background:#0e2080;-moz-transition: all 0.3s ease-out;-o-transition: all 0.3s ease-out;transition: all 0.3s ease-out;}

.main-min, .main-min * {margin:0;padding:0;list-style:none;height:50px;}
.main-min li {position:relative;}
.main-min ul {position:absolute;display:none;top:100%;left:0;z-index:99;}
.main-min > li {float: left;}
.main-min li:hover > ul,.main-min li.sfHover > ul {display: block;}
.main-min a {display:block;position:relative;}
.main-min ul ul {top:0;left:100%;}
.main-min ul {box-shadow: 2px 2px 6px rgba(0,0,0,.2);min-width:10em;*width: 80em;}
.main-min a {color:#fff;padding-left:20px;text-align:left;zoom: 1;}
.main-min li {white-space: nowrap;*white-space: normal;}
.main-min ul li {background:#1a30a7}
.main-min li:hover,
.main-min li.sfHover{-webkit-transition: none;transition:none;}
.main-min li:hover a,
.main-min li a:hover {color:#fff}
</style>

head.php에서
    <nav id="gnb">
        <h2>메인메뉴</h2>
        <div class="gnb_wrap">
            <ul id="gnb_1dul"> ==>> <ul id="gnb_1dul" class="main-min"> 이렇게 수정하세요.

답변을 작성하시기 전에 로그인 해주세요.
전체 123,127 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT