서브페이지에 관한 또 하나의 방법 정보
서브페이지에 관한 또 하나의 방법관련링크
본문
이 팁은 이미 올려져 있을 수도 있고 많은 분들이 사용중일 수도 있는데 초보분들을 위해 올립니다.
사이트를 만들다보면 일반 페이지 작업도 필요하게 되죠. 이럴 때 그냥 php문서를 따로 만들기도 하지만 게시판의 본문을 그대로 페이지로 활용할 경우도 있습니다. 그렇게 하면 나중에 수정작업을 해야 할 때 에디터+FTP를 열지 않고 웹상에서 바로 수정작업이 가능한 편리성이 있기 때문일 겁니다.
그래서 메뉴의 링크에 <a href='<?=$g4[bbs_path]?>/board.php?bo_table=AAA&wr_id=1'>회사소개</a> 이런 식으로 본문(view)의 url을 그대로 걸고, 대신 버튼 등의 게시판적 요소를 최대한 배제한 페이지용 스킨의 게시판을 따로 적용하곤 하지요.
그런데 이 방식은 일단 주소창에 본문url이 직설적으로 표현되는 것도 좀 찝찝(?)하고 혹시 wr_id의 값을 달리 했을 때 결국 메뉴의 링크값을 수정하기 위해 에디터+FTP를 손대야 하는 단점이 있습니다.
그래서 전 다른 방식을 고안해서 나름 잘 사용하고 있습니다. 아마 이미 이 방식을 사용중인 분들도 많지 싶군요^^;
요점은 게시판의 본문 내용을 최근글로 불러내어 서브페이지로 활용한다는 것입니다. 좀더 상세히 설명하자면 게시판 관리모드에서 설정한 카테고리를 메뉴로 활용하고 특정메뉴를 클릭했을 때 특정카테고리에 해당하는 게시글을 최근글로 불러온다는 것이 이 고안의 핵심입니다.
우선 게시판 하나를 서브페이지 용도로 지정합니다. 이때 게시판 스킨은 뭐래도 상관없습니다. 단 서브페이지 용도니만큼 목록보기/본문보기/글쓰기 권한을 관리자로만 제한하는 것이 좋겠네요. 물론 공개해도 상관없습니다.
그리고 extend 폴더에 특정 카테고리의 글뽑는 최근글 함수 하나를 만듭니다.
아래 소스는 제가 사용 중인 소스입니다. 이걸 extend 폴더 안에 index.php 안에 넣습니다. 혹은 현재 사용 중인 extend용 파일이 있다면 그 속에 넣어도 무방합니다.
///특정 카테고리 뽑기 (서브페이지용)
function latest_subpage($skin_dir="", $bo_table, $rows=10, $subject_len=40, $options="")
{
global $g4, $member;
if ($skin_dir)
$latest_skin_path = "$g4[path]/skin/latest/$skin_dir";
else
$latest_skin_path = "$g4[path]/skin/latest/basic";
$list = array();
$sql = " select * from $g4[board_table] where bo_table = '$bo_table'";
$board = sql_fetch($sql);
$tmp_write_table = $g4['write_prefix'] . $bo_table; // 게시판 테이블 전체이름
$sql = " select * from $tmp_write_table where wr_is_comment = 0 and ca_name = '$options' and wr_link1 = 'y' order by wr_num limit 0, $rows ";
$result = sql_query($sql);
for ($i=0; $row = sql_fetch_array($result); $i++)
$list[$i] = get_list($row, $board, $latest_skin_path, $subject_len);
ob_start();
include "$latest_skin_path/latest.skin.php";
$content = ob_get_contents();
ob_end_clean();
return $content;
}
//////여기까지
** sql값을 뽑는 소스중에 wr_link1 = 'y' 라는 부분이 있는데 이건 나중에 설명하겠습니다. 물론 고수님들은 이미 아셨겠지만..^^;
그 다음 최근글 스킨을 하나 만듭니다. 본문만 뽑아오면 되므로 소스가 아주 간단합니다.
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
for ($i=0; $i<1; $i++) {
echo $list[$i]['wr_content'];
} ?>
이걸 latest.skin.php로 저장한 후 sub_page라는 최근글 스킨폴더로 만들어 skin/latest/ 안에 넣습니다. 글로 풀어 쓰니까 더 복잡해진 듯 한데-_-; 이 파일의 경로는 아래와 같습니다.
g4/skin/latest/sub_page/latest.skin.php
이제 준비작업은 거의 끝났습니다.
서브페이지로 쓸 파일을 하나 만들어 (sub_page.php) 아래와 같은 최근글 불러오기 소스를 넣습니다.
<?=latest_subpage("sub_page",$inform,1,10,$intro)?>
여기서 $inform은 게시판 아이디, $intro는 카테고리명이 들어갈 자립니다. 서브페이지로 쓸 게시판이 하나밖에 없다면 $inform은 그 게시판 아이디로 고정해도 무방하겠지요.
이제 링크를 아래처럼 걸면 끝입니다. (서브페이지용 게시판 아이디가 AAA일 경우)
<a href='<?=$g4[path]?>/sub_page.php?inform=AAA&intro=<?=urlencode('회사소개')?>'>회사소개</a> |
<a href='<?=$g4[path]?>/sub_page.php?inform=AAA&intro=<?=urlencode('제품소개')?>'>제품소개</a> |
<a href='<?=$g4[path]?>/sub_page.php?inform=AAA&intro=<?=urlencode('찾아오시는길')?>'>찾아오시는길</a>
물론 이때 게시판(AAA)의 카테고리는 "회사소개|제품소개|찾아오시는길"로 설정되어 있어야겠죠.
이제 게시판에 서브페이지로 뽑아낼 내용을 올리고 해당 카테고리만 지정해주면 됩니다. 여기서 저는 링크1을 작성한 본문을 서브페이지로 뽑아낼지 말지를 선택하는 필드로 사용했습니다. (wr_link1 = 'y' 바로 이 대목)
즉 본문을 올리고 혹시 점검해야 할 경우를 대비한 거죠. 링크1 필드에 y를 입력하지 않으면 서브페이지에 적용되지 않습니다.
이제 정리하겠습니다.
필요한 파일 혹은 소스
extend/특정 카테고리 뽑기 (서브페이지용) 소스 추가
skin/latest/sub_page/latest.skin.php
sub_page.php
참고로 메뉴출력을 배열함수를 활용하여 자동으로 뽑아낼 수도 있겠죠.
글로 쓰다보니 어떻게 잘 의사전달이 되었는지 모르겠네요. 이걸 스킨으로 만들려다 보니 좀 애매하더군요. 아무튼 서브페이지 작업에 작으나마 유용한 힌트가 되길 바랍니다^^;
(근데 빼먹은게 있을지도.....ㅜㅜ)
사용예제는 링크.
사이트를 만들다보면 일반 페이지 작업도 필요하게 되죠. 이럴 때 그냥 php문서를 따로 만들기도 하지만 게시판의 본문을 그대로 페이지로 활용할 경우도 있습니다. 그렇게 하면 나중에 수정작업을 해야 할 때 에디터+FTP를 열지 않고 웹상에서 바로 수정작업이 가능한 편리성이 있기 때문일 겁니다.
그래서 메뉴의 링크에 <a href='<?=$g4[bbs_path]?>/board.php?bo_table=AAA&wr_id=1'>회사소개</a> 이런 식으로 본문(view)의 url을 그대로 걸고, 대신 버튼 등의 게시판적 요소를 최대한 배제한 페이지용 스킨의 게시판을 따로 적용하곤 하지요.
그런데 이 방식은 일단 주소창에 본문url이 직설적으로 표현되는 것도 좀 찝찝(?)하고 혹시 wr_id의 값을 달리 했을 때 결국 메뉴의 링크값을 수정하기 위해 에디터+FTP를 손대야 하는 단점이 있습니다.
그래서 전 다른 방식을 고안해서 나름 잘 사용하고 있습니다. 아마 이미 이 방식을 사용중인 분들도 많지 싶군요^^;
요점은 게시판의 본문 내용을 최근글로 불러내어 서브페이지로 활용한다는 것입니다. 좀더 상세히 설명하자면 게시판 관리모드에서 설정한 카테고리를 메뉴로 활용하고 특정메뉴를 클릭했을 때 특정카테고리에 해당하는 게시글을 최근글로 불러온다는 것이 이 고안의 핵심입니다.
우선 게시판 하나를 서브페이지 용도로 지정합니다. 이때 게시판 스킨은 뭐래도 상관없습니다. 단 서브페이지 용도니만큼 목록보기/본문보기/글쓰기 권한을 관리자로만 제한하는 것이 좋겠네요. 물론 공개해도 상관없습니다.
그리고 extend 폴더에 특정 카테고리의 글뽑는 최근글 함수 하나를 만듭니다.
아래 소스는 제가 사용 중인 소스입니다. 이걸 extend 폴더 안에 index.php 안에 넣습니다. 혹은 현재 사용 중인 extend용 파일이 있다면 그 속에 넣어도 무방합니다.
///특정 카테고리 뽑기 (서브페이지용)
function latest_subpage($skin_dir="", $bo_table, $rows=10, $subject_len=40, $options="")
{
global $g4, $member;
if ($skin_dir)
$latest_skin_path = "$g4[path]/skin/latest/$skin_dir";
else
$latest_skin_path = "$g4[path]/skin/latest/basic";
$list = array();
$sql = " select * from $g4[board_table] where bo_table = '$bo_table'";
$board = sql_fetch($sql);
$tmp_write_table = $g4['write_prefix'] . $bo_table; // 게시판 테이블 전체이름
$sql = " select * from $tmp_write_table where wr_is_comment = 0 and ca_name = '$options' and wr_link1 = 'y' order by wr_num limit 0, $rows ";
$result = sql_query($sql);
for ($i=0; $row = sql_fetch_array($result); $i++)
$list[$i] = get_list($row, $board, $latest_skin_path, $subject_len);
ob_start();
include "$latest_skin_path/latest.skin.php";
$content = ob_get_contents();
ob_end_clean();
return $content;
}
//////여기까지
** sql값을 뽑는 소스중에 wr_link1 = 'y' 라는 부분이 있는데 이건 나중에 설명하겠습니다. 물론 고수님들은 이미 아셨겠지만..^^;
그 다음 최근글 스킨을 하나 만듭니다. 본문만 뽑아오면 되므로 소스가 아주 간단합니다.
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
for ($i=0; $i<1; $i++) {
echo $list[$i]['wr_content'];
} ?>
이걸 latest.skin.php로 저장한 후 sub_page라는 최근글 스킨폴더로 만들어 skin/latest/ 안에 넣습니다. 글로 풀어 쓰니까 더 복잡해진 듯 한데-_-; 이 파일의 경로는 아래와 같습니다.
g4/skin/latest/sub_page/latest.skin.php
이제 준비작업은 거의 끝났습니다.
서브페이지로 쓸 파일을 하나 만들어 (sub_page.php) 아래와 같은 최근글 불러오기 소스를 넣습니다.
<?=latest_subpage("sub_page",$inform,1,10,$intro)?>
여기서 $inform은 게시판 아이디, $intro는 카테고리명이 들어갈 자립니다. 서브페이지로 쓸 게시판이 하나밖에 없다면 $inform은 그 게시판 아이디로 고정해도 무방하겠지요.
이제 링크를 아래처럼 걸면 끝입니다. (서브페이지용 게시판 아이디가 AAA일 경우)
<a href='<?=$g4[path]?>/sub_page.php?inform=AAA&intro=<?=urlencode('회사소개')?>'>회사소개</a> |
<a href='<?=$g4[path]?>/sub_page.php?inform=AAA&intro=<?=urlencode('제품소개')?>'>제품소개</a> |
<a href='<?=$g4[path]?>/sub_page.php?inform=AAA&intro=<?=urlencode('찾아오시는길')?>'>찾아오시는길</a>
물론 이때 게시판(AAA)의 카테고리는 "회사소개|제품소개|찾아오시는길"로 설정되어 있어야겠죠.
이제 게시판에 서브페이지로 뽑아낼 내용을 올리고 해당 카테고리만 지정해주면 됩니다. 여기서 저는 링크1을 작성한 본문을 서브페이지로 뽑아낼지 말지를 선택하는 필드로 사용했습니다. (wr_link1 = 'y' 바로 이 대목)
즉 본문을 올리고 혹시 점검해야 할 경우를 대비한 거죠. 링크1 필드에 y를 입력하지 않으면 서브페이지에 적용되지 않습니다.
이제 정리하겠습니다.
필요한 파일 혹은 소스
extend/특정 카테고리 뽑기 (서브페이지용) 소스 추가
skin/latest/sub_page/latest.skin.php
sub_page.php
참고로 메뉴출력을 배열함수를 활용하여 자동으로 뽑아낼 수도 있겠죠.
글로 쓰다보니 어떻게 잘 의사전달이 되었는지 모르겠네요. 이걸 스킨으로 만들려다 보니 좀 애매하더군요. 아무튼 서브페이지 작업에 작으나마 유용한 힌트가 되길 바랍니다^^;
(근데 빼먹은게 있을지도.....ㅜㅜ)
사용예제는 링크.
추천
2
2
댓글 6개

좋은 팁 감사합니다 잘 활용해보겠습니다.^^

서브페이지

좋은 팁 감사^^*

서브페이지 - extend 이용
서브페이지
게시판 본문을 일반페이지처럼 출력