메뉴에 페이지 아이디(?)명을 class명으로 불러오고 싶습니다.

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
메뉴에 페이지 아이디(?)명을 class명으로 불러오고 싶습니다.

QA

메뉴에 페이지 아이디(?)명을 class명으로 불러오고 싶습니다.

본문

안녕하세요.
그누보드5로 만든 홈페이지에 지금 제가 사용하는 메뉴입니다.


                <?php
                $menu_datas = get_menu_db(1, true);
                $gnb_zindex =1; // gnb_1dli z-index 값 설정용
                $i = 0;
                foreach( $menu_datas as $row ){
                    if( empty($row) ) continue;
                ?>
                    <li class="gnb_1dli"><a href='<?php echo $row['me_link']; ?>' class='m<?php echo $gnb_zindex++; ?>'><?php echo $row['me_name'] ?></a>
                            <ul class="depth2">
                            <?php
                            $k = 0;
                            foreach( (array) $row['sub'] as $row2 ){
                            if( empty($row2) ) continue;
                            if($k == 0)
                            ?><li><a href="<?php echo $row2['me_link']; ?>" class='이자리'><?php echo $row2['me_name'] ?></a></li>
                            <?php
                    $k++;
                            }    //end foreach $row2
                            if($k > 0)
                            ?></ul>
                    </li>
            <?php } ?>

위 소스중 class='이자리'에 페이지 아이디명(?)을 넣고 싶습니다.
도메인명/content/company 면 company
도메인명/free 면 free 이런 식으로요.

 

<?php echo $co_id; ?><?php echo $board['bo_table'] ?>를 넣으면 될 줄 알았더니,
이건 현재 페이지 아이디를 불러오는 거라서 모든 class명이 동일해지네요. 

 

이걸 구현하는게 간단한 건지 어려운 건지도 가늠이 안되는데, 

만약 의뢰할 정도의 수준이 아니라면 아시는 분 계시면 답변 좀 부탁드립니다.
감사합니다.

이 질문에 댓글 쓰기 :

답변 2

해당 게시글의 아이디 값과 게시판 테이블명을 원하시는거면

<?=$_GET['wr_id']?><?=$_GET['bo_table']?>

해당 URL이 아래와 같은 식이어야 합니다

https://demo.sir.kr/gnuboard5/bbs/board.php?bo_table=notice&wr_id=983

줄인주소사용? 을 하면 다를 것 같긴합니다

친절하신 답변 감사합니다.
네 짧은주소를 사용하고 있습니니다.
하지만 짧은주소를 사용하지 않아도, 하틴님께서 알려주신걸 쓰면
제가 사용했던, <?php echo $co_id; ?><?php echo $board['bo_table'] ?>를 쓴것과 똑같이 모든 class명이 동일하게 나와 버리네요.

아~~~~ 저는 해당 게시물에 들어갔을때 그 값을 가져오고싶어 하시는 줄 알았네요 ㅎㅎ;
그냥 메뉴뿌릴대 해당 메뉴값을 가져오고 싶으신거군요..
그러면 me_link 에 url을 잘라서 사용할 수 있을 것 같습니다.
=로 잘리는 지는 테스트는 못해봤지만 해당 값을 이용해서 사용하시면 될 것 같습니다.

if( empty($row) ) continue;               
$menu_id = explode( '=', $row2['me_link']); <-추가
?>

<?=$menu_id[1]?>

저때문에 계속 시간내주셔서 감사합니다.
일단 알려주신대로 해봤지만 아무런 변화가 없습니다. 아무것도 생성되지 않습니다.
짧은주소일때도 짧은주소 아닌때도 동일합니다.
그리고, 만약 알려주신게 수정해서 작동된다고 하더라도 짧은주소 아닐때만 사용 가능할듯한데,
짧은주소에서 사용할 수 있었으면 좋겠는데 방법이 없을까요?

짧은 주소로 하실려면

if( empty($row) ) continue;
$menu_id = explode( '/', $row['me_link']);

이렇게하시고
<?=end($menu_id)?> 이렇게 뿌리면 해당 게시판명이 나오게 됩니다.

안나왔던 이유가 보니까 $row2 로 되어있떠라구요? $row 로 받아오는데 $row2 는 왜있는건가요..?

계속 신경써주셔서 정말 감사합니다.
알려주신대로 하면, 짧은주소의 아이디를 가져오긴 하는데, 또 문제가 있네요.

각 게시판명으로 class를 가져와야 하는데, 
아래처럼 각 대메뉴안의 첫번째 소메뉴명 아이디로만 생성이 됩니다.

 



                   <li class="gnb_1dli"><a href='도메인명/content/company' class='m1'>회사소개</a>
                            <ul class="depth2">
                            <li><a href="도메인명/content/company" class='company'>회사소개</a></li>
                            <li><a href="도메인명/content/map" class='company'>찾아오시는 길</a></li>
                            <li><a href="도메인명/content/hi" class='company'>인사말</a></li>
                            </ul>
                    </li>
                    <li class="gnb_1dli"><a href='도메인명/free' class='m2'>111</a>
                            <ul class="depth2">
                            <li><a href="도메인명/free" class='free'>자유게시판</a></li>
                            <li><a href="도메인명/qna" class='free'>문의게시판</a></li>
                            <li><a href="도메인명/mov" class='free'>동영상게시판</a></li>
                            <li><a href="도메인명/gallery" class='free'>포토갤러리</a></li>
                            </ul>
                    </li>



그리고 $row로 하면, 대메뉴(1차메뉴)고 $row2로 하면 소메뉴(2차메뉴)가 되기에 그렇게 했습니다.

계속 신경써주셔서 정말 감사합니다.
알려주신대로 해보니 아래와 같이 나오네요.

<li class="gnb_1dli"><a href='도메인명/content/company' class='m1'>회사소개</a>
<ul class="depth2">
                            Array
(
    [me_id] => 40
    [me_code] => 1010
    [me_name] => 회사소개
    [me_link] => 도메인명/content/company
    [me_target] => self
    [me_order] => 0
    [me_use] => 1
    [me_mobile_use] => 1
    [ori_me_link] => 도메인명/content/company
)
<li><a href="도메인명/content/company" class='도메인명/content/company'>회사소개</a></li>
                            Array
(
    [me_id] => 41
    [me_code] => 1020
    [me_name] => 찾아오시는 길
    [me_link] => 도메인명/content/map
    [me_target] => self
    [me_order] => 0
    [me_use] => 1
    [me_mobile_use] => 1
    [ori_me_link] => 도메인명/content/map
)
<li><a href="도메인명/content/privacy" class='도메인명/content/map'>찾아오시는 길</a></li>
                            Array
(
    [me_id] => 42
    [me_code] => 1030
    [me_name] => 인사말
    [me_link] => 도메인명/content/hi
    [me_target] => self
    [me_order] => 0
    [me_use] => 1
    [me_mobile_use] => 1
    [ori_me_link] => 도메인명/content/hi
)
<li><a href="도메인명/content/provision" class='도메인명/content/hi'>인사말</a></li>
</ul>
</li>
.......

어..값이 제대로 나오네요? 그러면
if( empty($row) ) continue;
$menu_id = explode( '/', $row2['me_link']);

<?=end($menu_id)?>

이렇게 진행하셨을때 아무것도 안나오실까요? 그러시면
$menu_id = explode( '/', $row2['me_link']);
print_r($menu_id);

로 explode했을때 어떻게 들어가있는지 확인해봐야할 것 같습니다.

저는 헤드파일에 함께 선언합니다. 말씀하신대로 각 페이지별 다르게 들어가는 함수들이 있어 좋은 방법은 아니지만 ,, 참고하시라고 올립니다.

 


<?php
switch ($_GET["co_id"]) {
    case 'testtest':
        $subT = 'testtest';
        $classBackground = "testtest";
        break;
}
switch ($_GET["bo_table"]) {
    case 'test1':
    case 'test2':
    case 'test3':
        $subT = 'test1';
        $classBackground = "test";
        break;
}
?>

친절하신 답변 정말 감사합니다.
올려주신게 대략 어떤 방법인지는 알겠습니다.
저도 이미 다른 부분에 사용하고 있는 부분이라서요.
게시판과 내용관리의 아이디를 모두 미리 선언한다는 말씀이시지요?
그런데...
저렇게 상단에 작성한 후 class='이자리' 부분에는 어떤식으로 써야 할까요?

test1 페이지 경우에는
$subT 가 ㅅtest1로 선언되어있으니
class = "<?php echo $subT; ?> extraClassName"
활용하시면 될것같습니다.

클래스 내부 활용 방안은 잘 아실거라 생각됩니다.

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

회원로그인

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