Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
그누보드5 관리자에서 게시판 리스트, 글보기, 글쓰기

이 글은 그누보드를 처음깔고 관리자 화면에서 게시판 내용을 관리하기 위해서 몇시간의 삽질끝에 구성을 해봤습니다.

관리자 페이지에서 /adm/bbs/board.php?bo_table=notice 형태로 들어가면 게시판이 보였으면 좋겠다 싶어서 사용한 방법입니다.

아래 절차를 따로 오시면 어렵지 않게 하실 수 있으실 것 같아요.

bbs 디렉토리를 /adm/에도 똑같이 복사해줍니다.

gnuboard/bbs   이 디렉토리를 
gnuboard/adm/bbs  여기에도 복사를 해주시면 되요. 

자, 이렇게 되면 위와 같은 구조로 디렉토리가 남을 것입니다.

adm/bbs 의 _common.php 파일 수정

<?php
define('G5_IS_ADMIN', true);
include_once ('../../common.php');
include_once(G5_ADMIN_PATH.'/admin.lib.php');
?>

실제 common.php 파일 경로와 admin.lib.php 가 추가 되어야 합니다.

그누보드 상수 설정

/adm/bbs/ 를 뛰워야 하기 때문에 기본 링크가 변경이 필요합니다.

gnuboard/adm/admin.lib.php 파일 가서 먼저 상수를 추가 해줍니다.

define('G5_ADMIN_BBS_DIR',        'adm/bbs');
define('G5_ADMIN_BBS_URL',        G5_URL.'/'.G5_ADMIN_BBS_DIR);
define('G5_ADMIN_HTTP_BBS_URL',  https_url(G5_ADMIN_BBS_DIR, false));
define('G5_ADMIN_HTTPS_BBS_URL', https_url(G5_ADMIN_BBS_DIR, true));

게시판 레이아웃 지우기

관리자가 가지고 있는 기본적인 레이아웃을 맞추기 위해서는 게시판에 admin.head.php, admin.tail.php 를 연결해야합니다. 게시판은 기본적으로 3가지 화면을 가집니다.

  • list
  • view
  • write

list, view 는 board.php 에 통합되어 있고 write 는 write.php 에 있습니다.

즉 board.php 와 write.php 에서 레이아웃을 맞춰야합니다.

레이아웃 맞추기 전에 먼저 제거 해야할 게 있는데요.

  • board_head.php
  • board_tail.php

2개의 파일이 게시판에서 사용되는 기본화면에 대한 레이아웃입니다. 이 부부은 admin 에서 필요 없기 때문에 과감히 수정해줍니다.

gnuboard/adm/bbs/board_head.php 

<div style='padding:10px;'>
	<div >

gnuboard/adm/bbs/board_tail.php

	</div>
</div>

자신만의 레이아웃을 구성하셔도 상관 없습니다.

관리자 레이아웃 맞추기

게시판 레이아웃을 지웠으면 이제 board.php, write.php 에 관리자 레이아웃을 추가해야합니다.

gnuboard/adm/bbs/board.php

이렇게 생긴 부분을 
include_once('./_common.php'); 

아래와 같이 바꿉니다. 

$sub_menu = "001000";   <- 게시판이 나타나야 하는 기본 메뉴 

if ($_GET['bo_table'] == 'notice') {
	$sub_menu = "001500";           <- 게시판이  지정된 메뉴 번호 
}

include_once('./_common.php');  <- 기존과 동일 

auth_check($auth[$sub_menu], 'r'); <- 이건 권한 체크인데. 어짜피 관리자로 들어온거라 필요는 없을 것 ㅏㅌ네요. 

$token = get_token();

if ($is_admin != 'super')
    alert('최고관리자만 접근 가능합니다.');    <- 관리자만 볼 수 있습니다. 

$g5['title'] = '';   <- bo_table 에 따라 다른 title 지정해주시면 될 것 같아요. 
include_once ('../admin.head.php');   <- admin 페이지 레이아웃 head 를 지정합니다. 

include_once(G5_PATH.'/head.sub.php');   <- 지워주세요. 
include_once(G5_PATH.'/tail.sub.php');   <- 지워주세요. 

include_once ('../admin.tail.php');   <- admin 페이지 레이아웃 tail을 지정합니다. 

write.php 도 같은 방법으로 작업 해주시면 됩니다.

리스트 확인하기

위 설정이 다 되셨으면 게시판을 만들고 아래 링크로 들어가봅니다.

gnuboard/adm/bbs/board.php?bo_table=notice

리스트가 나오면 정상이어요.

리스트 나올 때 링크를 클릭해보면 알겠지만 view 페이지 링크가 메인으로 가게 되어 있습니다 . 이걸 adm/bbs 로 돌려야 해요.

list 링크 수정

gnuboard/adm/bbs/list.php 를 보시면 실제 글을 get_list() 함수를 통해서 가지고 오는 것을 알 수 있습니다. 실제로 get_list() 함수에서 실제 가야될 경로를 설정해줍니다.

get_list() 함수는 gnuboard/lib/common.lib.php 에 있습니다. 여기서 보시면 get_list() 안에 기본적으로 G5_BBS_URL 을 지정해주는것을 알 수 있습니다.

이것 때문에 adm/bbs 로 링크가 못오고 외부로 다시 가게 됩니다.

여기를 살짝 수정해보죠.

먼저파라미터 정의 부분에서 $BBS_PATH 라는 변수를 추가 합니다. 기본값은 G5_BBS_URL 로 두시구여.

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

그런 다음 get_list 내부에 사용되는 G5_BBS_URL 을 모두 $BBS_PATH 로 바꿉니다.

$list['ca_name_href'] = $BBS_PATH.'/board.php?bo_table='.$board['bo_table'].'&amp;sca='.urlencode($list['ca_name']);
$list['href'] = $BBS_PATH.'/board.php?bo_table='.$board['bo_table'].'&amp;wr_id='.$list['wr_id'].$qstr;
$list['link_href'][$i] = $BBS_PATH.'/link.php?bo_table='.$board['bo_table'].'&amp;wr_id='.$list['wr_id'].'&amp;no='.$i.$qstr;

이 부분이 수정되었으면 gnuboard/adm/bbs/list.php 에서 get_list 를 사용할 때 G5_ADMIN_BBS_URL 을 넘겨줍니다.

// 공지 처리
$list[$i] = get_list($row, $board, $board_skin_url, G5_IS_MOBILE ? $board['bo_mobile_subject_len'] : $board['bo_subject_len'], G5_ADMIN_BBS_URL);

...

// 페이지의 공지개수가 목록수 보다 작을 때만 실행 
$list[$i] = get_list($row, $board, $board_skin_url, G5_IS_MOBILE ? $board['bo_mobile_subject_len'] : $board['bo_subject_len'], G5_ADMIN_BBS_URL);

장소가 2개군요. 하나는 공지사항, 하나는 그냥 리스트

글쓰기

자 다시 리스트 페이지를 가봅시다. /gnuboard/adm/bbs/board.php?bo_table=notice

가셔서 글쓰기를 눌러보시면 됩니다.

글을 쓴 다음에 저장을 누르시면 또 메인으로 가버립니다.

여기도 링크 변경이 필요하겠네요.

gnuboard/adm/bbs/write.php 로 가셔서 저장하는 페이지 링크를 바꿉니다.

$action_url = https_url(G5_ADMIN_BBS_DIR)."/write_update.php";

$action_url 을 바꾸시면 이제 adm/bbs 쪽에 있는 write_update.php 를 사용하게 됩니다.

저장후 이동링크 변경 하기

/gnuboard/adm/bbs/write_update.php 도 고쳐보시죠.

alert('올바른 방법으로 수정하여 주십시오.', G5_ADMIN_BBS_URL.'/board.php?bo_table='.$bo_table);

$link_url = G5_ADMIN_BBS_URL.'/board.php?bo_table='.$bo_table.'&amp;wr_id='.$wr_id.'&amp;'.$qstr;

if ($file_upload_msg)
    alert($file_upload_msg, G5_ADMIN_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&amp;wr_id='.$wr_id.'&amp;page='.$page.$qstr);
else
    goto_url(G5_ADMIN_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&amp;wr_id='.$wr_id.$qstr);    

여기는 4가지 정되가 있네요.

관련된 링크를 모두 수정하시면 이제 저장후에도 다시 adm/bbs 기준으로 이동하게 됩니다.

메뉴 연결하기

이제 /gnuboard/adm/bbs/board.php?bo_table=notice 라는 링크를 갖게 되었습니다.

게시판 관련해서 관리자 메뉴가 /gnuboard/adm/admin.menu300.php 에 설정되어 있기 때문에 여기에 게시판 링크를 하나 추가 해볼게요.

$menu['menu300'] = array (
    array('300000', '게시판관리', ''.G5_ADMIN_URL.'/board_list.php', 'board'),
    array('300100', '게시판관리', ''.G5_ADMIN_URL.'/board_list.php', 'bbs_board'),
    array('300200', '게시판그룹관리', ''.G5_ADMIN_URL.'/boardgroup_list.php', 'bbs_group'),
    array('300300', '인기검색어관리', ''.G5_ADMIN_URL.'/popular_list.php', 'bbs_poplist', 1),
    array('300400', '인기검색어순위', ''.G5_ADMIN_URL.'/popular_rank.php', 'bbs_poprank', 1),
    array('300500', '1:1문의설정', ''.G5_ADMIN_URL.'/qa_config.php', 'qa'),
    array('300600', '내용관리', G5_ADMIN_URL.'/contentlist.php', 'scf_contents', 1),
    array('300700', 'FAQ관리', G5_ADMIN_URL.'/faqmasterlist.php', 'scf_faq', 1),
    
    // 여기에 한번 넣어보시죠. 
    array('300710', '공지사항 게시판', G5_ADMIN_URL.'/bbs/board.php?bo_table=notice', 'news'),

이제 메뉴도 추가하였습니다. 새로고침 해서 게시판쪽 메뉴를 보시면 공지사항게시판 생깁니다.

여기를 누르면 관리자에서도 이제 게시판을 사용하실 수 있어요.

@easylogic

This comment has been minimized.

Copy link
Owner Author

@easylogic easylogic commented May 14, 2015

adm/bbs 에 있는 common 파일도 수정되어야함. 참고하세요,.

@tankweb

This comment has been minimized.

Copy link

@tankweb tankweb commented May 27, 2016

안녕하세요 몇가지 오류가 있는거 같습니다.board.php 에서 링크 몇가지 적용이 안되어서
카테고리 링크가 제대로 안되고 자잘한 문제가 있더군요

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

include_once(G5_PATH.'/adm/bbs/board_tail.php');

admin_bbs_폴더 경로가 안먹히고 있습니다. 그래서 제가 수정해서 해결하긴 했습니다.

@easylogic

This comment has been minimized.

Copy link
Owner Author

@easylogic easylogic commented Aug 11, 2016

@tankweb 의견 감사합니다. 다시 테스트 해봐야겠네요. ^^

@ahnjoonhyuk

This comment has been minimized.

Copy link

@ahnjoonhyuk ahnjoonhyuk commented Feb 7, 2019

안녕하세요 글을쓰려는데 작성완료를 누르는순간 '올바른 방법으로 이용해 주십시오.' 이게뜨면서 안되는데 어떤이유일까요?
어디가 잘못된걸까요?....ㅜ알려주세요 부탁드립니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment