채택완료

그누보드 메뉴 active 질문있습니다..

2019-11-19 (화) 22:18:33 3,635
Copy
<?php
          $parent_menu_sql = "select *
                            from {$g5['menu_table']}
                            where me_use = '1'
                              and length(me_code) = '2'
                            order by me_order";
          $parent_menu_res = sql_query($parent_menu_sql);

          for($i=0;$row=sql_fetch_array($parent_menu_res);$i++){
            $menu_sql = " 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 ";
            $menu_res = sql_query($menu_sql);

            ?>
            <li class="treeview">
                <a href="<?=$row[me_link]?>">
                  <span><?=$row[me_name]?></span>
                </a>
                <ul class="treeview-menu">
                  <?

                      for($k=0;$row2=sql_fetch_array($menu_res);$k++){?>
                        <li class="<?php if(strpos($_SERVER['REQUEST_URI'],$row2[me_link]) !== false){?>active<?php }?>">
                          <a href="<?=$row2[me_link]?>">- <?=$row2[me_name]?></a>
                        </li>
                  <?}?>
                </ul>
            </li>
          <?}?>

메뉴를 이렇게 뿌리는데 하위 메뉴는 현재 url과 me_link 비교해서 active 주면될거같은데

active 된 li 그 상위 부모li (treeview)에도 active를 주려면 어떻게 해야하나요?..

|

답변 2개 / 댓글 2개

채택된 답변
+20 포인트
일단 올리신 방법으로 문제되는게 게시판같은 링크를 달경우

/bbs/board.php?bo_table=notice

글쓰기나  상세페이지 갔을때 서브메뉴에서 active가 안걸립니다. 변수때문에 일치하지 않으니까요.

/bbs/board.php?bo_table=notice&wr_id=11

질문하신 소스에서 원하시는 부분만 구현하자면 ob함수로 서브메뉴를 미리 돌려서 active가 있으면 부모 $parent_active가 true가 되면서active클래스가 추가됩니다.

<?php
$parent_menu_sql = "select *
                            from {$g5['menu_table']}
                            where me_use = '1'
                              and length(me_code) = '2'
                            order by me_order";
$parent_menu_res = sql_query($parent_menu_sql);
for($i=0;$row=sql_fetch_array($parent_menu_res);$i++){
    $menu_sql = " 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 ";
    $menu_res = sql_query($menu_sql);
    ?>
    <li class="treeview">

        <?php
        $parent_active= false;
        ob_start();
        ?>
        <ul class="treeview-menu">
            <?
            for($k=0;$row2=sql_fetch_array($menu_res);$k++){?>
                <li class="<?php if(strpos($_SERVER['REQUEST_URI'],$row2[me_link]) !== false){  $parent_active= true; ?>active<?php }?>">
                    <a href="<?=$row2[me_link]?>">- <?=$row2[me_name]?></a>
                </li>
            <?}?>
        </ul>
        <?php
        $parent_active= false;
        $sub_menu_ul = ob_get_contents();
        ob_end_clean();
        ?>

        <a href="<?=$row[me_link]?>" <?php echo $parent_active?'active':''?>>
            <span><?=$row[me_name]?></span>
        </a>

        <?php echo $sub_menu_ul?>
    </li>
<?}?>

답변에 대한 댓글 1개

이렇게 해도 페이지가 변하면 상위 active가 사라지네요 ㅠ
2019-11-19 (화) 22:47:55

제이쿼리로 처리해야합니다. 클릭시 클래스 추가되도록

답변에 대한 댓글 1개

페이지가 변하면 active 준게 사라지는데 어떻게처리하나요..?ㅠ

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