채택완료
메뉴에 페이지 아이디(?)명을 class명으로 불러오고 싶습니다.
안녕하세요.
그누보드5로 만든 홈페이지에 지금 제가 사용하는 메뉴입니다.
Copy
<?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개 / 댓글 14개
채택된 답변
+20 포인트
해당 게시글의 아이디 값과 게시판 테이블명을 원하시는거면
<?=$_GET['wr_id']?><?=$_GET['bo_table']?>
해당 URL이 아래와 같은 식이어야 합니다
https://demo.sir.kr/gnuboard5/bbs/board.php?bo_table=notice&wr_id=983
줄인주소사용? 을 하면 다를 것 같긴합니다
답변에 대한 댓글 11개
아~~~~ 저는 해당 게시물에 들어갔을때 그 값을 가져오고싶어 하시는 줄 알았네요 ㅎㅎ;
그냥 메뉴뿌릴대 해당 메뉴값을 가져오고 싶으신거군요..
그러면 me_link 에 url을 잘라서 사용할 수 있을 것 같습니다.
=로 잘리는 지는 테스트는 못해봤지만 해당 값을 이용해서 사용하시면 될 것 같습니다.
if( empty($row) ) continue;
$menu_id = explode( '=', $row2['me_link']); <-추가
?>
<?=$menu_id[1]?>
그냥 메뉴뿌릴대 해당 메뉴값을 가져오고 싶으신거군요..
그러면 me_link 에 url을 잘라서 사용할 수 있을 것 같습니다.
=로 잘리는 지는 테스트는 못해봤지만 해당 값을 이용해서 사용하시면 될 것 같습니다.
if( empty($row) ) continue;
$menu_id = explode( '=', $row2['me_link']); <-추가
?>
<?=$menu_id[1]?>
계속 신경써주셔서 정말 감사합니다.
알려주신대로 하면, 짧은주소의 아이디를 가져오긴 하는데, 또 문제가 있네요.
각 게시판명으로 class를 가져와야 하는데,
아래처럼 각 대메뉴안의 첫번째 소메뉴명 아이디로만 생성이 됩니다.
[code]
<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>
[/code]
그리고 $row로 하면, 대메뉴(1차메뉴)고 $row2로 하면 소메뉴(2차메뉴)가 되기에 그렇게 했습니다.
알려주신대로 하면, 짧은주소의 아이디를 가져오긴 하는데, 또 문제가 있네요.
각 게시판명으로 class를 가져와야 하는데,
아래처럼 각 대메뉴안의 첫번째 소메뉴명 아이디로만 생성이 됩니다.
[code]
<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>
[/code]
그리고 $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>
.......
알려주신대로 해보니 아래와 같이 나오네요.
<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했을때 어떻게 들어가있는지 확인해봐야할 것 같습니다.
if( empty($row) ) continue;
$menu_id = explode( '/', $row2['me_link']);
<?=end($menu_id)?>
이렇게 진행하셨을때 아무것도 안나오실까요? 그러시면
$menu_id = explode( '/', $row2['me_link']);
print_r($menu_id);
로 explode했을때 어떻게 들어가있는지 확인해봐야할 것 같습니다.
저는 헤드파일에 함께 선언합니다. 말씀하신대로 각 페이지별 다르게 들어가는 함수들이 있어 좋은 방법은 아니지만 ,, 참고하시라고 올립니다.
Copy
<?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;
}
?>
답변에 대한 댓글 3개
답변을 작성하려면 로그인이 필요합니다.
네 짧은주소를 사용하고 있습니니다.
하지만 짧은주소를 사용하지 않아도, 하틴님께서 알려주신걸 쓰면
제가 사용했던, <?php echo $co_id; ?><?php echo $board['bo_table'] ?>를 쓴것과 똑같이 모든 class명이 동일하게 나와 버리네요.