한개의 게시판으로 다양한 출력형태 구현하기 정보
한개의 게시판으로 다양한 출력형태 구현하기관련링크
본문
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
댓글 9개
