G5 Menu 함수 정보
G5 Menu 함수본문
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기반으로 작동되기 때문에 관리자 메뉴 관리에서 도메인을 제외 하도록 작성 해주세요.
# 사용방법은 다음과 같습니다.
head.php 최상단 추가
헤드 메뉴 출력부
서브 메뉴 출력부
서브메뉴 타이틀 (<?php $SubMenu = SubMenu(); ?> 호출 다음 사용가능)
페이지 타이틀 (<?php $SubMenu = SubMenu(); ?> 호출 다음 사용가능)
네비게이션 (<?php $SubMenu = SubMenu(); ?> 호출 다음 사용가능)<네비 링크는 요령것 알아서~>
TBClass(유틸리티 클래스) = http://yobi.foxrain.me/terrorboy/terrorboy/code/master/%EC%9E%90%EC%9E%91/PHP/TBClass/TerrorBoy.class.php
ps. 해당 함수 내부에는 회원관련 메뉴가 자동으로 셋팅되도록 작업 되어있습니다.
ps2. 함수 자체가 URI기반으로 작동되기 때문에 관리자 메뉴 관리에서 도메인을 제외 하도록 작성 해주세요.
/* --------------------------------------------------------------------------- */
// 마이메뉴
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;
}
# 사용방법은 다음과 같습니다.
head.php 최상단 추가
<?php $MyMenu = MyMenu(); ?>
헤드 메뉴 출력부
<?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 } ?>
서브 메뉴 출력부
<?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 } ?>
서브메뉴 타이틀 (<?php $SubMenu = SubMenu(); ?> 호출 다음 사용가능)
<?php echo echo SUB_MENU_TITLE; ?>
페이지 타이틀 (<?php $SubMenu = SubMenu(); ?> 호출 다음 사용가능)
<?php echo echo CONTENT_TITLE; ?>
네비게이션 (<?php $SubMenu = SubMenu(); ?> 호출 다음 사용가능)<네비 링크는 요령것 알아서~>
<?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 } ?>
추천
7
7
댓글 14개
역시...짝짝짝...
추천드립니다.
추천드립니다.
감사합니다
그누보드를 폴더로 설치 하시는 분들을 위하여 내용추가 (해당 글 본문에 반영)
추가로 저는
처럼 주소 치환자도 사용하고 있는데요.
이건 문제가 많이 되서 본문에서 빠져있습니다.
ps. 실제로 G5 기본 메뉴 관리는 거의 사용하지 않아 급할때 사용하기 위한 소스라 해당 부분에 대한 패치는 없을 것으로 보입니다.
# 그누보드를 폴더 설치 했을 경우를 위한 설정(2014-06-20 추가)
# 폴더 설치 상관없이 게시판 링크라면 메뉴 설정 링크를 /bbs/board.php?bo_table=test 식으로 써주시면 됩니다.
$SitePath = G5_URL;
$SitePathParse = parse_url($SitePath);
$MenuData['uri'] = str_replace($SitePathParse['path'], '', $MenuData['uri']);
추가로 저는
if($MenuData['uri'] == '/') $MenuData['uri'] = '{{홈}}';
$MenuData['uri'] = str_replace('/bbs', '{{bbs}}', $MenuData['uri']);
처럼 주소 치환자도 사용하고 있는데요.
이건 문제가 많이 되서 본문에서 빠져있습니다.
ps. 실제로 G5 기본 메뉴 관리는 거의 사용하지 않아 급할때 사용하기 위한 소스라 해당 부분에 대한 패치는 없을 것으로 보입니다.
감사합니다
^^
무림 고수 테러님 이건 어떤 소스인가요!??
g5의 메뉴를 보다 쉽게 사이트에서 표현하기위한 함수입니다
아...................하..................넵 !!!!!!!!!!!!!!!!! 사용해봐야지이이이이이이이이이
저는 왜 안될까요 ?.........
common.php mymenu() 함수를 넣고... 그아래 head.php 에 넣어봣는데,, 백지화면이 ' - '!!!!!!!!!! 초보에게는 무리인가요!?
common.php mymenu() 함수를 넣고... 그아래 head.php 에 넣어봣는데,, 백지화면이 ' - '!!!!!!!!!! 초보에게는 무리인가요!?
http://yobi.foxrain.me/terrorboy/terrorboy/code/master/%EC%9E%90%EC%9E%91/PHP/TBClass/TerrorBoy.class.php
tb클래스가 없는듯 한데요.
위링크의 파일을 서버에 저장뒤 extend 폴더에 적당한 이름으로 다음과 같은 내용을 작성 하시면됩니다.
tb클래스가 없는듯 한데요.
위링크의 파일을 서버에 저장뒤 extend 폴더에 적당한 이름으로 다음과 같은 내용을 작성 하시면됩니다.
<?php
include_once(파일위치.'/TerrorBoy.class.php');
$tb = new Terrorboy();
본문에서 echo가 중복 선언 되있었네요~
서브메뉴 타이틀 (<?php $SubMenu = SubMenu(); ?> 호출 다음 사용가능)
페이지 타이틀 (<?php $SubMenu = SubMenu(); ?> 호출 다음 사용가능)
서브메뉴 타이틀 (<?php $SubMenu = SubMenu(); ?> 호출 다음 사용가능)
<?php echo SUB_MENU_TITLE; ?>
페이지 타이틀 (<?php $SubMenu = SubMenu(); ?> 호출 다음 사용가능)
<?php echo CONTENT_TITLE; ?>
노고에 감사드립니다ㅠㅠ
^^
고맙습니다..