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'] = @sql_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'] = @sql_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'] = @sql_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 } ?>
<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'] = @sql_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'] = @sql_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'] = @sql_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 } ?>