한개의 게시판으로 다양한 출력형태 구현하기 정보
한개의 게시판으로 다양한 출력형태 구현하기관련링크
본문
1. 게시판 list.skin.php 에 아래 코드 적용
--------------------------------------
if($board[bo_10]){
include_once("$board_skin_path/list/$board[bo_10]");
//웹페이지인경우
if($board[bo_10] == 'page.skin.php'){
if($admin_href)
include_once("$board_skin_path/adm.skin.php");
}
}
else
include_once("$board_skin_path/list/basic.skin.php");
2. 스킨 디렉토리에 list 폴더 생성
예) g4/skin/board/basic/list
--> list 폴더에 목록에서 출력할 형태의 소스를 넣는다.
3. 관리자 board_form.php 에 여분필드 10을 아래와 같이 수정
----------------------------------------------------------
<tr class='ht'>
<td><input type=checkbox name=chk_10 value=1></td>
<td>여분필드 설정</td>
<td>
<?
if($board[bo_skin] == 'basic'){
$set_file = $board[bo_skin]."/list";
?>
<select name=bo_10 required itemname="출력형태">
<?
$arr = get_file_dir($set_file);
for ($i=0; $i<count($arr); $i++) {
echo "<option value='$arr[$i]'>$arr[$i]</option>\n";
}
?></select>
<script language="JavaScript">document.fboardform.bo_10.value="<?=$board[bo_10]?>";</script>
<?}
else{
?><input type=text class=ed style='width:80%;' name='bo_10' value='<?=get_text($board["bo_10"])?>' title='여분필드 10 설정값'><?}
?>
</td>
</tr>
<tr><td colspan=3 class='line2'></td></tr>
<? for ($i=1; $i<=9; $i++) { ?>
<tr class='ht'>
<td><input type=checkbox name=chk_<?=$i?> value=1></td>
<td><input type=text class=ed name='bo_<?=$i?>_subj' value='<?=get_text($board["bo_{$i}_subj"])?>' title='여분필드 <?=$i?> 제목' style='text-align:right;font-weight:bold;'></td>
<td><input type=text class=ed style='width:80%;' name='bo_<?=$i?>' value='<?=get_text($board["bo_$i"])?>' title='여분필드 <?=$i?> 설정값'></td>
</tr>
<? } ?>
-----------------------------------------------------------
4. amin.lib.php 에 아래코드 추가
-------------------------------
// 스킨경로를 얻는다
function get_file_dir($skin, $len='')
{
global $g4;
$result_array = array();
$dirname = "$g4[path]/skin/board/$skin/";
$handle = opendir($dirname);
$i=0;
while ($file = readdir($handle))
{
if($file == "."||$file == "..") continue;
if (!(is_dir($dirname.$file))){
if (!(preg_match("/\.(bak)$/i", $file)))
$result_array[] = $file;
}
$i++;
}
closedir($handle);
sort($result_array);
return $result_array;
}
----------------------------------------------------
5. 응용하기
기존 공개된 스킨들의 list.skin.php 파일들을 list 폴더에 파일명을 변형하여 세팅합니다.
예) list.skin.php ---> list/web.skin.php
** if (!(preg_match("/\.(bak)$/i", $file)))
==>> 소스중에 이부분을 넣는 이유는 원본파일을 새로작성할 경우 bak 파일이 생성되어 검색이 되기때문에 예외를 시켜주어야 합니다.
6