(관리자 페이지 및 다른 디렉토리에서 ) 게시판 끌어오기 > 그누보드5 팁자료실

그누보드5 팁자료실

(관리자 페이지 및 다른 디렉토리에서 ) 게시판 끌어오기 정보

(관리자 페이지 및 다른 디렉토리에서 ) 게시판 끌어오기

본문

기존 /bbs/~ 게시판 로직을 다른 디렉토리에서 include하여 사용하는 방식이다.

따라서 기존 /bbs/~ 게시판 로직을 수정할 경우 다른곳에서 수정할 필요가 없다. 한 곳의 로직으로 다른곳에서 동일하게 사용한다.

(아래는 관리자페이지(/adm/)에서 게시판을 끌어오는 경우이다.)

 

/adm/board_list.php

:유져단 게시판으로 이동하는 것에서 관리자 디렉토리 내에서 게시판에 접속하도록 경로를 변경한다.

<a href="<?php echo G5_BBS_URL ?>/board.php?bo_table=<?php echo $row['bo_table'] ?>"><?php echo $row['bo_table'] ?></a>

<a href="./board.php?bo_table=<?php echo $row['bo_table'] ?>"><?php echo $row['bo_table'] ?></a>

로 교체

 

/lib/common.lib.php

1. 다음 함수 추가 : /bbs/~디렉토리 외에 다른곳에 게시판을 불러오는지 분별하는 함수이다.(아래는 관리자페이지에서 불러오는 경우로 진행)

-관리자 페이지가 아닌 다른 디렉토리에서 게시판을 끌어오는 경우 아래(‘/adm/’)에서 해당 경로로 수정해주어야 한다.

-아래의 경우 관리자 페이지가 아니더라도 ‘adm’이라는 경로가 포함되면 'ture'가 return됨을 주의.

 

function is_adm_page(){

$is_adm_page = parse_url($_SERVER['PHP_SELF']);

if(strpos($is_adm_page['path'], '/adm/') !== false) {

return true;

}

}

 

2.

function get_list($write_row, $board, $skin_url, $subject_len=40)

{

global $g5, $config;

global $qstr, $page;

에서 마지막에 아래와 같이 글로벌 변수를 추가(관리자 페이지에서 끌어오는 경우)

global $is_admin;

 

 

3.

$list['href'] = G5_BBS_URL.'/board.php?bo_table='.$board['bo_table'].'&wr_id='.$list['wr_id'].$qstr;

 

if(is_adm_page() && $is_admin=='super'){

$list['href'] = './board.php?bo_table='.$board['bo_table'].'&wr_id='.$list['wr_id'].$qstr;

}else{

$list['href'] = G5_BBS_URL.'/board.php?bo_table='.$board['bo_table'].'&wr_id='.$list['wr_id'].$qstr;

}

와 같이 구분해준다.

특정 페이지에서 게시판을 끌어오는 경우 게시판 관련 링크를 해당 디렉토리 기준으로 구분하는 과정이다.

-‘&& $is_admin=='super'’조건은 필요에 맞게 수정한다.

 

4. 다음 함수에서 코드를 추가한다.

-새로 추가된 코드나 실제 적용될 디렉토리 위치는 필요에 맞게 수정한다.

 

// $dir 을 포함하여 https 또는 http 주소를 반환한다.

function https_url($dir, $https=true)

{

/*새로 추가된 코드*/

if(is_adm_page()){

$dir= 'adm';

}

/*새로 추가된 코드 끝*/

if ($https) {

if (G5_HTTPS_DOMAIN) {

$url = G5_HTTPS_DOMAIN.'/'.$dir;

} else {

$url = G5_URL.'/'.$dir;

}

} else {

if (G5_DOMAIN) {

$url = G5_DOMAIN.'/'.$dir;

} else {

$url = G5_URL.'/'.$dir;

}

}

 

return $url;

}

 

 

/bbs/board.php

:게시판을 다른곳에서 include하는 경우 헤더와 푸터는 제외한다.

 

include_once(G5_BBS_PATH.'/board_head.php');

if(!is_adm_page()){

include_once(G5_BBS_PATH.'/board_head.php');

}

로 수정

 

include_once(G5_BBS_PATH.'/board_tail.php');

if(!is_adm_page()){

include_once(G5_BBS_PATH.'/board_tail.php');

}

로 수정

 

 

/bbs/write.php

:해당 경로에 board_head.php와 board_tail.php이 없어서 처리해주지 않아도 결과는 같지만 불필요한 include가 추후에 에러가 될 수 있기 때문에 처리해준다.

 

include_once('./board_head.php');

if(!is_adm_page()){

include_once('./board_head.php');

}

로 수정

 

include_once('./board_tail.php');

if(!is_adm_page()){

include_once('./board_tail.php');

}

로 수정

 

 

/head.sub.php

: 관리자페이지(defined('G5_IS_ADMIN'))에서 끌어오는 경우 관리자 관련 css만 불러오게 되므로 유져단(게시판 관련 css포함) css를 불러온다.

-조건문의 defined('adm_board')는 게시판을 끌어오는 페이지에서만 작동할 수 있도록 해당 페이지 상단에 정의된 값이다.

 

<?php

if (defined('G5_IS_ADMIN')) {

if(!defined('_THEME_PREVIEW_'))

echo '<link rel="stylesheet" href="'.G5_ADMIN_URL.'/css/admin.css">'.PHP_EOL;

} else {

<?php

if (defined('G5_IS_ADMIN')) {

if(!defined('_THEME_PREVIEW_'))

echo '<link rel="stylesheet" href="'.G5_ADMIN_URL.'/css/admin.css">'.PHP_EOL;

if(defined('adm_board')) {

$shop_css = '';

if (defined('_SHOP_')) $shop_css = '_shop';

echo '<link rel="stylesheet" href="'.G5_CSS_URL.'/'.(G5_IS_MOBILE?'mobile':'default').$shop_css.'.css?ver='.G5_CSS_VER.'">'.PHP_EOL;

}

} else {

로 수정

 

 

/adm/board.php 생성

 

<?php

define('adm_board', true);

$sub_menu = "300900";

include_once('./_common.php');

auth_check($auth[$sub_menu], 'r');

include_once('./admin.head.php');

include_once(G5_PATH.'/bbs/board.php');

?>

 

<?php

include_once('./admin.tail.php');

?>

 

 

/adm/write.php 생성

 

<?php

define('adm_board', true);

$sub_menu = "300900";

include_once('./_common.php');

auth_check($auth[$sub_menu], 'r');

include_once('./admin.head.php');

include_once(G5_PATH.'/bbs/write.php');

?>

 

<?php

include_once('./admin.tail.php');

?>

 

 

/adm/write_update.php 생성

 

<?php

define('adm_board', true);

$sub_menu = "300900";

include_once('./_common.php');

auth_check($auth[$sub_menu], 'r');

//include_once('./admin.head.php');

include_once(G5_PATH.'/bbs/write_update.php');

?>

 

<?php

//include_once('./admin.tail.php');

?>

 

/adm/admin.tail.php

:관리자 페이지에서 글을 작성하는 경우 관리자 전용 js로 인해 토큰값이 중복되어 문제가 생긴다.

관리자 페이지 게시판일 경우 불러오는 스크립트를 구분해준다.

 

<script src="<?php echo G5_ADMIN_URL ?>/admin.js?ver=<?php echo G5_JS_VER; ?>"></script>

 

<?php

if(defined('adm_board')) { ?>

<script src="<?php echo G5_ADMIN_URL ?>/admin_no_token.js?ver=<?php echo G5_JS_VER; ?>"></script>

<?php } else { ?>

<script src="<?php echo G5_ADMIN_URL ?>/admin.js?ver=<?php echo G5_JS_VER; ?>"></script>

<?php } ?>

로 수정

 

 

/adm/admin_no_token.js 생성

: /adm/admin.js에서 아래 함수만 제거한 동일한 내용

$(function() {

$(document).on("click", "form input:submit", function() {

var f = this.form;

var token = get_ajax_token();

 

if(!token) {

alert("토큰 정보가 올바르지 않습니다.");

return false;

}

 

var $f = $(f);

 

if(typeof f.token === "undefined")

$f.prepend('<input type="hidden" name="token" value="">');

 

$f.find("input[name=token]").val(token);

 

return true;

});

});

 

 

관리자 페이지의 경우 게시판을 끌어오면서 default.css도 같이 끌어왔기 때문에 .css 중복이 일어난다.

따라서 아래와 같이 처리한다.

 

/adm/css/admin.css

 

/* 레이아웃 */

~

/* gnb */

~

부분에 'adm_'을 붙여준다.

ex)#hd => #adm_hd

 

/adm/admin.tail.php

하단의 메뉴 관련 스크립트에도 역시 ‘adm_’을 붙여준다.

 

admin.head.php

:위에서 수정한 css id,class와 대응되는 관리자 페이지 메뉴 코드를 모두 수정한다.

ex) <header id="hd"> → <header id="adm_hd">

 

/css/default.css

:관리자 페이지에서 끌어오는 경우 유져단 css코드와 중복되므로 주석처리해준다.(단, 유져단에서 사용하지 않는 코드만)

 

/* 중간 레이아웃 */

/*

#wrapper

~

#container_title

*/

 

(관리자페이지에서 게시판을 끌어오는 경우 푸터 관련 css는 따로 처리하지 않음)

(코멘트, 답변글 로직은 따로 생성하지 않음, board.php, write.php write_update.php 만 끌어옴.)

추천
4

댓글 8개

필요한 정보였는데 막상 따라하려니
css를 잘 몰라서 마지막 css수정하고 헤드랑 테일에서 대응되는것 수정하는 과정이 어렵네요...
css 부분이 무슨말씀이신지 이해가 안됩니다. /*레이아웃*/ ~ 은 무슨뜻인지... 부분에 adm을 다 붙이라는말이 뭔지 도대체 이해가안됩니다ㅠㅠ 도와주세요 저게 무슨뜻이죠? 어디다가 adm을 붙이라는거죠?
/adm/css/admin.css 파일 열어보시면 레이아웃이라고 주석처리되어 있습니다.
캡쳐이미지 참고하세요~ /* gnb */ 부분도 동일하게 변경하시면됩니다,
그런데 게시판 리스트 2번째 페이지로 갈려고 클릭하면 없는 게시판이라고 경고창이 뜨면서 메인으로 팅겨버리네요..;; 저만 그런가요??
전체 2,412 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

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