테스트 사이트 - 개발 중인 베타 버전입니다

부트스랩 메뉴설정 채택완료

레몬파이 7년 전 조회 3,099

영카트 shop.head.php 부트스트랩 메뉴설정시 

막히는부분이 생기네요 

영카트 admin 메뉴설정후 

아래 샘플처럼 꾸미려고 하는데 . . . 

php 함수와 .dropdown .active 부분과 sub-menu 부분이 꼬입니다.

하위디랙토리가 없을때에도 마우스오버시 role menu가 빈 box로 보이네요 

뭐가 문제인지... 끙끙데다가 올립니다.

디자인은 몰라도 프로그래머 부분은 약합니다.

고수님들께 도움을 청합니다. 

이런식으로 보이네요 ~!

php에서는 active옵션을 어떻게 처리해야하나요.. 

 

shop.head.php  코드는 아래에 있습니다. 

 

부트스랩 메뉴설정 부분 아래같이 움직이는 샘플입니다.

</p>

<p><div class="collapse navbar-collapse">

           <ul class="nav navbar-nav navbar-right">

                        <li><a href="<?=G5_URL ?>/#">Home</a></li>

                        <li class="dropdown active"></p>

<p>                           <a href="<?=G5_URL ?>/#">Business<i class="fa fa-angle-down"></i></a>

                            <ul role="menu" class="sub-menu">

                                <li><a href="<?=G5_URL ?>/#">About</a></li>

                                <li><a href="<?=G5_URL ?>/#">process</a></li>

                            </ul>

                        </li></p>

<p>                        <li class="dropdown"></p>

<p>                            <a href="<?=G5_URL ?>/#">Blog</p>

<p>                                <i class="fa fa-angle-down"></i></p>

<p>                            </a>

                            <ul role="menu" class="sub-menu">

                                <li><a href="<?=G5_URL ?>/#">Blog</a></li>

                                <li><a href="<?=G5_URL ?>/#">3D data</a></li>

                            </ul>

                        </li></p>

<p>          </ul></p>

<p></div></p>

<p>

 

문제가 되는 영카트 메뉴설정 부분 입니다. 

            <div class="collapse navbar-collapse"></p>

<p>                <!-- 메뉴 설정 -->

                <ul class="nav navbar-nav navbar-right">

                    <?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 값 설정용</p>

<p>                    for ($i=0; $row=sql_fetch_array($result); $i++) {

                    ?>

                    <?php

                    if($i > 0) {

                        echo '<li class="dropdown active">'.PHP_EOL;

                    } else {

                        echo '<li>'.PHP_EOL;

                    }

                    ?>

                        <a href="<?php echo $row['me_link']; ?>" target="_<?php echo $row['me_target']; ?>" class="">

                        <?php echo $row['me_name'] ?>

                        <i class="fa fa-angle-down"></i>

                        </a></p>

<p>                        <!--ul role="menu" class="sub-menu"-->

                        <?php

                        if($i > 0)

                            echo '<ul role="menu" class="sub-menu">'.PHP_EOL;

                        else 

                            echo '<ul>'.PHP_EOL;

                        ?>

                        <?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);</p>

<p>                        for ($k=0; $row2=sql_fetch_array($result2); $k++) {

                            if($k == 0)

                                echo '<ul class="cate-ul-2" style="margin:0; padding:0;">'.PHP_EOL;

                        ?>

                            <li class="cate-li-2" style="">

                                <a href="<?php echo $row2['me_link']; ?>" target="_<?php echo $row2['me_target']; ?>">

                                    <?php echo $row2['me_name'] ?>

                                </a>

                            </li>

                        <?php

                        }</p>

<p>                        if($k > 0)

                            echo '</ul>'.PHP_EOL;

                        ?>

                        </ul>

                    </li>

                    <?php

                    }</p>

<p>                    if ($i == 0) {  ?>

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

                    <?php } ?>

                </ul>

                <!-- 메뉴 설정 end --></p>

<p>

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트
7년 전

  if($i > 0) {
      echo '<li class="dropdown active">'.PHP_EOL;

<---이곳을 서브메뉴가 없는 순번을 넣으세요

 

  if($i !=0 && $i !=2 && $i !=3) { // 0, 2, 3은 서브메뉴가 없는 주메뉴 순번입니다
                        echo '<li class="dropdown active">'.PHP_EOL;

 

그런데 active class를 저렇게 넣으면 안되는데...

다음처럼 해보세요

<a href="<?php echo $row['me_link']; ?>" target~~~

--->

<a href="<?php echo $row['me_link']; ?>?mnum=<?=$i?>" target <--링크에 이미 ?가 들어간다면 &로 변경해야함(그런 경우가 있다면 이것을 판단하는 코드를 하나 만들어야겠지요)

 

<a href="<?php echo $row2['me_link']; ?>" target~~~

--->

<a href="<?php echo $row2['me_link']; ?>?mnum=<?=$i?>" target

 

echo '<li class="dropdown active">'.PHP_EOL;

--->

if(!$mnum) $mnum = 0;

$active = $i==$mnum? ' active' : '';

 

 if($i !=0 && $i !=2 && $i !=3) 
      echo "<li class='dropdown{$active}'>".PHP_EOL;

  else echo "<li class='$active'>".PHP_EOL;

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

레몬파이
7년 전
감사합니다.
거의 저에게는 신에 한수입니다.

코드수정하니
아 근데 모바일 에서 꺽새표 누르면 드롭다운.. 메뉴가 안 내려가는 문제가 있네요 ~~!
메뉴가 내려가서 하위sub메뉴가 보여야 돼는데 ...

모바일 에서 문제 ... 1, 4번만 움직임 나머지는 무반응 .... 이유를모름 ?
mnum = 0 메뉴 안내려감
mnum = 1 내려감
mnum = 2 안내려감
mnum = 3 안내려감
mnum = 4 내려감

javascript 에러가 없었는데 생겼네요~! 분석중 입니다.

<?php
if($i >= 0)
echo '<ul role="menu" class="sub-menu">'.PHP_EOL;
else
echo '<ul>'.PHP_EOL;
?>

//아마 이 role="menu" 부분이 문제인가... 이건 class도 아니고 어떻게 처리를 해야하나
<ul role="menu" class="sub-menu">
이분분도 위와 같은 변수로 처리하면 sub menu가 있을때만 나타나게 할수있나요 ?

어째든 여기까지 온건만해서 감사하고 있습니다.


[code]
<!-- 메뉴 설정 -->
<ul class="nav navbar-nav navbar-right">
<?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(!$mnum) $mnum = 0;
$active = $i==$mnum? ' active' : '';

if($i !=0 && $i !=2 && $i !=3)
echo "<li class='dropdown{$active}'>".PHP_EOL;
else echo "<li class='$active'>".PHP_EOL;
?>
<a href="<?php echo $row['me_link']; ?>?mnum=<?=$i?>" target="_<?php echo $row['me_target']; ?>" class="">
<?php echo $row['me_name'] ?>
<i class="fa fa-angle-down"></i>
</a>

<!--ul role="menu" class="sub-menu"-->
<?php
if($i > 0)
echo '<ul role="menu" class="sub-menu">'.PHP_EOL;
else
echo '<ul>'.PHP_EOL;
?>
<?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="cate-ul-2" style="margin:0; padding:0;">'.PHP_EOL;
?>
<li class="cate-li-2" style="">
<a href="<?php echo $row2['me_link']; ?>?mnum=<?=$i?>" target="_<?php echo $row2['me_target']; ?>">
<?php echo $row2['me_name'] ?>
</a>
</li>
<?php
}

if($k > 0)
echo '</ul>'.PHP_EOL;
?>
</ul>
</li>
<?php
}

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

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인