관리자 페이지에서 게시판 사용하기 정보
관리자 페이지에서 게시판 사용하기본문
이 글은 그누보드를 처음깔고 관리자 화면에서 게시판 내용을 관리하기 위해서 몇시간의 삽질끝에 구성을 해봤습니다.
관리자 페이지에서 /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'].'&sca='.urlencode($list['ca_name']);
$list['href'] = $BBS_PATH.'/board.php?bo_table='.$board['bo_table'].'&wr_id='.$list['wr_id'].$qstr;
$list['link_href'][$i] = $BBS_PATH.'/link.php?bo_table='.$board['bo_table'].'&wr_id='.$list['wr_id'].'&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.'&wr_id='.$wr_id.'&'.$qstr;
if ($file_upload_msg)
alert($file_upload_msg, G5_ADMIN_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&wr_id='.$wr_id.'&page='.$page.$qstr);
else
goto_url(G5_ADMIN_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&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'),
이제 메뉴도 추가하였습니다.
새로고침 해서 게시판쪽 메뉴를 보시면 공지사항게시판
생깁니다.
여기를 누르면 관리자에서도 이제 게시판을 사용하실 수 있어요.
9
댓글 17개
감사합니다. ^^
$sub_menu = "001000"; <- 게시판이 나타나야 하는 기본 메뉴
$sub_menu = "001500"; <- 게시판이 지정된 메뉴 번호
이건 어떤 메뉴 번호를 뜻하는 건가요?
array('300710', '공지사항 게시판', G5_ADMIN_URL.'/bbs/board.php?bo_table=notice', 'news');
뒤에 news는 뭘 뜻하는 거에요?
다른분들은 다들 잘돼시나 보네요
몇가지 수정할 부분이 있어서
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_BBS_PATH', G5_PATH.'/'.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));
adm/bbs/board.php
include_once ('../admin.head.php');
//echo G5_ADMIN_BBS_PATH;
// 게시물 아이디가 있다면 게시물 보기를 INCLUDE
if (isset($wr_id) && $wr_id) {
include_once(G5_ADMIN_BBS_PATH.'/view.php'); <--- 변경 되었습니다.
if ($member['mb_level'] >= $board['bo_list_level'] && $board['bo_use_list_view'] || empty($wr_id))
include_once (G5_ADMIN_BBS_PATH.'/list.php'); <---- 변경되었습니다.
이렇게 수정하시면 본문 페이지 이동 되네요.
그리고 style 깨지는 부분만 고치면 될듯 합니다.
좋은 정보 감사합니다
admin.tail.php
하단에
<script>
$(document).ready(function() {
$('a').each(function() {
var href = $(this).attr('href');
if (href && href.includes('/bbs')) {
var newHref = href.replace('/bbs', '/admin/bbs');
$(this).attr('href', newHref);
}
});
});
</script>
를 추가해서 링크를 변경하는 방법도 괜찮을것 같습니다.