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

메뉴에 페이지 아이디(?)명을 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"
활용하시면 될것같습니다.

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

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

회원로그인

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