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

G5 Menu 함수

· 11년 전 · 11290 · 14
14.06.03에 올린 자료에서 함수와 사용방법이 빠져 재등록 합니다.(라고 쓰고 "사용법이 없어 추천이 없는것 같아서 누락된 함수 추가 하면서 재등록 한것" 이라고 읽는다.)



TBClass(유틸리티 클래스) = http://yobi.foxrain.me/terrorboy/terrorboy/code/master/%EC%9E%90%EC%9E%91/PHP/TBClass/TerrorBoy.class.php

ps. 해당 함수 내부에는 회원관련 메뉴가 자동으로 셋팅되도록 작업 되어있습니다.
ps2. 함수 자체가 URI기반으로 작동되기 때문에 관리자 메뉴 관리에서 도메인을 제외 하도록 작성 해주세요.

[code]
/* --------------------------------------------------------------------------- */
// 마이메뉴
function MyMenu() {

global $g5, $tb, $board;

/* ============================================= */
/* 기본값 설정 */
/* --------------------------------------------- */
# 초기값
$MenuData = '';
$MenuData['depth'] = 0;
$MenuData['data'] = array();
$MenuData['parent'] = array();

# 위치에 대한 서버경로
$MenuData['path'] = $_SERVER['SCRIPT_FILENAME'];

# 위치에 대한 URL FULL URL
$MenuData['url'] = '//'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];

# 위치에 다한 URI
$MenuData['uri'] = $_SERVER['REQUEST_URI'];

# URL에서 파라미터와 파일 분리
$MenuData['parse_url'] = parse_url($MenuData['uri']);

# 그누보드를 폴더 설치 했을 경우를 위한 설정(2014-06-20 추가)
# 폴더 설치 상관없이 게시판 링크라면 메뉴 설정 링크를 /bbs/board.php?bo_table=test 식으로 써주시면 됩니다.
$SitePath = G5_URL;
$SitePathParse = parse_url($SitePath);
$MenuData['uri'] = str_replace($SitePathParse['path'], '', $MenuData['uri']);
/* --------------------------------------------- */
/* 기본값 설정 */
/* ============================================= */




/* ============================================= */
/* 컨텐츠/게시판에 대한 주소 매칭 */
/* --------------------------------------------- */
# 컨텐츠의 경우 URI 값 변조하여 매칭
if($MenuData['path'] == G5_BBS_PATH.'/content.php') {

$MenuData['uri'] = str_replace($MenuData['parse_url']['query'], 'co_id='.$_REQUEST['co_id'], $MenuData['uri']); // 확장 파라미터를 제거 한다
}


# 게시판의 경우 URI 값 변조하여 매칭
if(isset($_REQUEST['bo_table'])) {

$MenuData['uri'] = str_replace('write.php', 'board.php', $MenuData['uri']); // 쓰기 페이지도 board로 인식 시킴
if($board['bo_10'] == 'category_menu') { //

$MenuData['uri'] = str_replace($MenuData['parse_url']['query'], 'bo_table='.$_REQUEST['bo_table'].'&sca='.$_REQUEST['sca'], $MenuData['uri']); // 확장 파라미터를 제거 한다
}
else {

$MenuData['uri'] = str_replace($MenuData['parse_url']['query'], 'bo_table='.$_REQUEST['bo_table'], $MenuData['uri']); // 확장 파라미터를 제거 한다
}
}
/* --------------------------------------------- */
/* 컨텐츠/게시판에 대한 주소 매칭 */
/* ============================================= */




/* ============================================= */
/* 메뉴에 대한 정보 담기 */
/* --------------------------------------------- */
# 나 자신에 대한 정보
$MenuData['data'] = $tb->GetQuery(" select * from `{$g5['menu_table']}` where `me_link` = '{$MenuData['uri']}' order by length(`me_code`) desc ");


# 나 자신의 DEPTH를 구함
$MenuData['depth'] = strlen($MenuData['data']['me_code'])/2;


# 나의 부모에 대한 정보
if($MenuData['depth'] == 1) {

$MenuData['parent'][0] = $MenuData['data'];
}
else if($MenuData['depth'] == 2) {

$MenuData['parent'][0] = $tb->GetQuery(" select * from `{$g5['menu_table']}` where `me_code` = '".substr($MenuData['data']['me_code'], 0, 2)."' order by length(`me_code`) desc ");
$MenuData['parent'][1] = $MenuData['data'];
}
else {

$MenuData['parent'][0] = $tb->GetQuery(" select * from `{$g5['menu_table']}` where `me_code` = '".substr($MenuData['data']['me_code'], 0, 2)."' order by length(`me_code`) desc ");
$MenuData['parent'][1] = $tb->GetQuery(" select * from `{$g5['menu_table']}` where `me_code` = '".substr($MenuData['data']['me_code'], 0, 4)."' order by length(`me_code`) desc ");
$MenuData['parent'][2] = $MenuData['data'];
}
/* --------------------------------------------- */
/* 메뉴에 대한 정보 담기 */
/* ============================================= */

return $MenuData;
}


/* --------------------------------------------------------------- */
// 서브메뉴
function SubMenu() {

global $g5, $board, $tb, $MyMenu, $is_member;

$order = 0;


/* ============================================= */
/* 기본페이지 좌측 메뉴 설정 */
/* --------------------------------------------- */
# 멤버쉽
if( $g5['title'] == "로그인" ||
$g5['title'] == "회원가입약관" ||
$g5['title'] == "회원 가입" ||
$g5['title'] == "회원 정보 수정" ||
$g5['title'] == "회원 패스워드 확인" ||
$g5['title'] == "회원 비밀번호 확인" || $g5['title'] == "새글") {

# 기본 타이틀 지정
define('SUB_MENU_TITLE', '멤버십');

if( $g5['title'] == "회원가입약관" ||
$g5['title'] == "회원 가입") {

define('CONTENT_TITLE', "회원가입");

# 현제 페이지 코드를 지정한다.
$GLOBALS['MyMenu']['parent'][1]['me_code'] = 'join';
}
else if($g5['title'] == "회원 정보 수정" ||
$g5['title'] == "회원 패스워드 확인" ||
$g5['title'] == "회원 비밀번호 확인") {

define('CONTENT_TITLE', "회원 정보 수정");

# 현제 페이지 코드를 지정한다.
$GLOBALS['MyMenu']['parent'][1]['me_code'] = 'member_confirm';
}
else {

define('CONTENT_TITLE', $g5['title']);
}
}

if($g5['title'] == "비밀번호 입력") {

define('SUB_MENU_TITLE', "패스워드 입력");

if($g5['title'] = "비밀번호 입력") {

define('CONTENT_TITLE', '패스워드 입력');
}

# 현제 페이지 코드를 지정한다.
$GLOBALS['MyMenu']['parent'][1]['me_code'] = 'member_confirm';
}

if($g5['title'] == "회원가입이 완료되었습니다.") {

define('SUB_MENU_TITLE', '멤버십');
define('CONTENT_TITLE', '회원가입 완료');

# 현제 페이지 코드를 지정한다.
$GLOBALS['MyMenu']['parent'][1]['me_code'] = 'member_confirm';
}
/* --------------------------------------------- */
/* 기본페이지 좌측 메뉴 설정 */
/* ============================================= */




/* ============================================= */
/* 연계 좌측 메뉴 설정 */
/* --------------------------------------------- */
# 기본 타이틀 지정
define('SUB_MENU_TITLE', $MyMenu['parent'][0]['me_name']);

# 컨텐츠 타이틀 지정
define('CONTENT_TITLE', $MyMenu['data']['me_name']);
/* --------------------------------------------- */
/* 연계 좌측 메뉴 설정 */
/* ============================================= */




/* ============================================= */
/* 좌측 메뉴 설정 */
/* --------------------------------------------- */
# 멤버쉽 메뉴 셋팅
if(SUB_MENU_TITLE == '멤버십') {

if($is_member){ // 회원

$SubMenu[$order]['me_name'] = '로그아웃';
$SubMenu[$order]['me_link'] = G5_BBS_URL.'/logout.php';
$SubMenu[$order]['me_code'] = 'none';
$SubMenu[$order]['me_target'] = 'self';
$order += 1;

$SubMenu[$order]['me_name'] = '회원 정보 수정';
$SubMenu[$order]['me_link'] = G5_BBS_URL.'/member_confirm.php?url=register_form.php';
$SubMenu[$order]['me_code'] = 'member_confirm';
$SubMenu[$order]['me_target'] = 'self';
$order += 1;

$SubMenu[$order]['me_name'] = '회원 탈퇴';
$SubMenu[$order]['link'] = G5_BBS_URL.'/member_confirm.php?url=member_leave.php';
$SubMenu[$order]['me_code'] = 'none';
$SubMenu[$order]['me_target'] = 'self';
$order += 1;
}
else { // 비회원

$SubMenu[$order]['me_name'] = '로그인';
$SubMenu[$order]['me_link'] = G5_BBS_URL.'/login.php';
$SubMenu[$order]['me_code'] = 'login';
$SubMenu[$order]['me_target'] = 'self';
$order += 1;

$SubMenu[$order]['me_name'] = '회원가입';
$SubMenu[$order]['me_link'] = G5_BBS_URL.'/register.php';
$SubMenu[$order]['me_code'] = 'join';
$SubMenu[$order]['me_target'] = 'self';
$order += 1;

$SubMenu[$order]['me_name'] = '아이디/비번찾기';
$SubMenu[$order]['me_link'] = G5_BBS_URL.'/password_lost.php" id="login_password_lost';
$SubMenu[$order]['me_code'] = 'none';
$SubMenu[$order]['me_target'] = 'win_password_lost';
$order += 1;

}
}
else {

# 기본 메뉴데이터 지정
$SubMenu = $tb->GetQuery(" select * from `{$g5['menu_table']}` where `me_use` = 1 and `me_code` like '".substr($MyMenu['data']['me_code'], 0, 2)."%' and length(`me_code`) = 4 order by `me_order`, `me_id` asc ", array("output"=>"array"));
}
/* --------------------------------------------- */
/* 좌측 메뉴 설정 */
/* ============================================= */

return $SubMenu;
}
[/code]






# 사용방법은 다음과 같습니다.




head.php 최상단 추가
[code]
<?php $MyMenu = MyMenu(); ?>
[/code]





헤드 메뉴 출력부
[code]
<?php
$HeadMenu = $tb->GetQuery(" select * from {$g5['menu_table']} where `me_use` = 1 and length(me_code) = 2 order by `me_order`, `me_id` asc ", array("output"=>"array"));
for($i=0; $i<count($HeadMenu); $i++) {
?>
<li<?php if($HeadMenu[$i]['me_code'] == $MyMenu['parent'][0]['me_code']) { echo " class=\"on\""; } ?>>
<a href="<?php echo $HeadMenu[$i]['me_link']; ?>" target="_<?php echo $HeadMenu[$i]['me_target']; ?>" class="headlink"><strong><span></span><?php echo $HeadMenu[$i]['me_name']; ?></strong></a>
</li>
<?php } ?>
[/code]





서브 메뉴 출력부
[code]
<?php $SubMenu = SubMenu(); ?>

<?php for($i=0; $i<count($SubMenu); $i++) { ?>
<li<?php if($MyMenu['data']['me_code'] == $SubMenu[$i]['me_code']) { echo " class=\"on\""; } ?>><a href="<?php echo $SubMenu[$i]['me_link']; ?>"><?php echo $SubMenu[$i]['me_name']; ?><span class="bul b24"></span></a></li>
<?php } ?>
[/code]



서브메뉴 타이틀 (<?php $SubMenu = SubMenu(); ?> 호출 다음 사용가능)
[code]
<?php echo echo SUB_MENU_TITLE; ?>
[/code]



페이지 타이틀 (<?php $SubMenu = SubMenu(); ?> 호출 다음 사용가능)
[code]
<?php echo echo CONTENT_TITLE; ?>
[/code]



네비게이션 (<?php $SubMenu = SubMenu(); ?> 호출 다음 사용가능)<네비 링크는 요령것 알아서~>
[code]
<?php if($MyMenu['parent'][0]['me_name']) { ?>> <?php echo $MyMenu['parent'][0]['me_name']; ?><?php } ?>
<?php if($MyMenu['parent'][1]['me_name']) { ?>> <?php echo $MyMenu['parent'][1]['me_name']; ?><?php } ?>
<?php if($MyMenu['parent'][2]['me_name']) { ?>> <?php echo $MyMenu['parent'][2]['me_name']; ?><?php } ?>
[/code]

댓글 작성

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

로그인하기

댓글 14개

본문에서 echo가 중복 선언 되있었네요~


서브메뉴 타이틀 (<?php $SubMenu = SubMenu(); ?> 호출 다음 사용가능)
[code]
<?php echo SUB_MENU_TITLE; ?>
[/code]




페이지 타이틀 (<?php $SubMenu = SubMenu(); ?> 호출 다음 사용가능)
[code]
<?php echo CONTENT_TITLE; ?>
[/code]
노고에 감사드립니다ㅠㅠ
^^
고맙습니다..

게시글 목록

번호 제목
1938
1936
1930
1926
1920
1914
1912
1898
1895
1889
1884
1881
1873
1871
1830
1829
1828
1826
1815
1803
1796
1793
1790
1788
1781
1779
1760
1759
1751
1750