테스트 사이트 - 개발 중인 베타 버전입니다

관리자 페이지에서 게시판 사용하기

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



관리자 페이지에서 /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'),


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



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

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 17개

https://gist.github.com/easylogic/fc4e9ce2b60a8ab50ab9 원본은 여기서 확인 하실 수 있습니다.
꿀팁이네요..정말 ...대단하십니다...
오오 쫄깃한 정보입니다.
감사합니다. ^^
허허~~ 관리자에서 mysql DB별도로 생성해서 만들기 작업 이틀 했습니다... 일찍 일찍 검색부터 할것을 ㅎㅎㅎㅎ
좋은 팁 감사합니다 ㅎ
좋은 정보 감사합니다!^_^*

$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 깨지는 부분만 고치면 될듯 합니다.
dhtml이 안먹습니다.
시도해보겠습니다.
관리자페이지
한번 해봐야 겠네요.
좋은 정보 감사합니다
좋은 내용 감사합니다

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>

를 추가해서 링크를 변경하는 방법도 괜찮을것 같습니다.

 

게시글 목록

번호 제목
23966
23963
23953
23949
23938
23935
23933
23928
23919
23918
23917
23910
23902
23901
23897
23894
23893
23891
23885
23872
23870
23862
23859
23853
23845
23838
23827
23819
23805
23801