그누 보드 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'),

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

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