여분필드를 활용해서 특정 게시물만 최신글로 추출하기 > 그누보드 최신글스킨 강좌

본문 바로가기
전체검색

아이디비번찾기

그누보드 최신글스킨 강좌

그누보드 영카트 초보 사용자를 위한 기본 매뉴얼, 스킨 제작 기초강좌를 공유합니다.

여분필드를 활용해서 특정 게시물만 최신글로 추출하기

페이지 정보

작성자 관리자 작성일17-08-16 10:48 조회863회

첨부파일

latest.lib.php (5.8K) 2017-08-16 11:04:47

본문

그누보드 최신글스킨 강좌

게시판에 글을 등록할 때 별도로 체크한 게시물만 최신글로 출력하는 방법입니다.

 


수정파일1 : lib/latest.lib.php

 

기존에 있던 최신글 함수를 복사해서 함수명을 다른 이름으로 변경해서 같은 파일 하단에 새로 추가

아래 예제에서는 함수명을 function latest_main 으로 변경했습니다.


 

// 특정 게시물 최신글 추출
// $cache_time 캐시 갱신시간
function latest_main($skin_dir='', $bo_table, $rows=10, $subject_len=40, $cache_time=1, $options='')
{
    global $g5;

    if (!$skin_dir) $skin_dir = 'basic';

    if(preg_match('#^theme/(.+)$#', $skin_dir, $match)) {
        if (G5_IS_MOBILE) {
            $latest_skin_path = G5_THEME_MOBILE_PATH.'/'.G5_SKIN_DIR.'/latest/'.$match[1];
            if(!is_dir($latest_skin_path))
                $latest_skin_path = G5_THEME_PATH.'/'.G5_SKIN_DIR.'/latest/'.$match[1];
            $latest_skin_url = str_replace(G5_PATH, G5_URL, $latest_skin_path);
        } else {
            $latest_skin_path = G5_THEME_PATH.'/'.G5_SKIN_DIR.'/latest/'.$match[1];
            $latest_skin_url = str_replace(G5_PATH, G5_URL, $latest_skin_path);
        }
        $skin_dir = $match[1];
    } else {
        if(G5_IS_MOBILE) {
            $latest_skin_path = G5_MOBILE_PATH.'/'.G5_SKIN_DIR.'/latest/'.$skin_dir;
            $latest_skin_url  = G5_MOBILE_URL.'/'.G5_SKIN_DIR.'/latest/'.$skin_dir;
        } else {
            $latest_skin_path = G5_SKIN_PATH.'/latest/'.$skin_dir;
            $latest_skin_url  = G5_SKIN_URL.'/latest/'.$skin_dir;
        }
    }

    $cache_fwrite = false;
    if(G5_USE_CACHE) {
        $cache_file = G5_DATA_PATH."/cache/latest-{$bo_table}-{$skin_dir}-{$rows}-{$subject_len}.php";

        if(!file_exists($cache_file)) {
            $cache_fwrite = true;
        } else {
            if($cache_time > 0) {
                $filetime = filemtime($cache_file);
                if($filetime && $filetime < (G5_SERVER_TIME - 3600 * $cache_time)) {
                    @unlink($cache_file);
                    $cache_fwrite = true;
                }
            }

            if(!$cache_fwrite)
                include($cache_file);
        }
    }

    if(!G5_USE_CACHE || $cache_fwrite) {
        $list = array();

        $sql = " select * from {$g5['board_table']} where bo_table = '{$bo_table}' ";
        $board = sql_fetch($sql);
        $bo_subject = get_text($board['bo_subject']);

        $tmp_write_table = $g5['write_prefix'] . $bo_table; // 게시판 테이블 전체이름
        $sql = " select * from {$tmp_write_table} where wr_is_comment = 0 and wr_1 = '1' 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_url, $subject_len);
        }

        if($cache_fwrite) {
            $handle = fopen($cache_file, 'w');
            $cache_content = "<?php\nif (!defined('_GNUBOARD_')) exit;\n\$bo_subject='".sql_escape_string($bo_subject)."';\n\$list=".var_export($list, true)."?>";
            fwrite($handle, $cache_content);
            fclose($handle);
        }
    }

    ob_start();
    include $latest_skin_path.'/latest.skin.php';
    $content = ob_get_contents();
    ob_end_clean();

    return $content;
}
 

 

위 내용에서 자세히 보시면 쿼리 부분에 빨간색 부분이 추가되었습니다.

and wr_1 = '1'

wr_1 여분 필드에있는 값을 체크하는 조건을 추가한 거죠.

 

 

수정파일2 : 게시판스킨 write.skin.php

 

여분필드 1번을 활용해서 체크박스를 추가합니다. 체크한 게시물만 최신글로 출력되는 겁니다.

 

<?php if ($is_admin) { ?>
<tr>
    <th scope="row">메인출력</th>
    <td><input type="checkbox" name="wr_1" value="1" <?php echo ($write['wr_1'] == "1") ? "checked" : "";?>> 메인출력 </td>
</tr>
<?php } ?>
 

보통 이런 기능은 관리자가 사용할 것 같아서 체크박스 부분은 관리자만 보이게 해놨습니다.

 

 

수정파일 3 : 최신글이 출력되는 파일 (index.php)

 

최신글을 출력할 때 기본적으로 이렇게 출력하는데

 

echo latest("basic", notice, 5, 25);

 

latest 출력 함수를 새로 추가한 함수명으로 교체합니다.

 

echo latest_main("basic", notice, 5, 25);

 

최신글 스킨 자체에서는 수정할 부분이 없습니다. 아무 스킨이나 사용해도 됩니다.

수정된 latest.lib.php 파일 첨부해놨습니다. 안 되시면 참고하세요.

스킨 제작 강좌글은 아닌데 최신글과 관련된 내용이라서 여기에 올립니다.

로그인 후 댓글을 남겨주세요.
게시물 검색


그누스터디는 그누보드, 영카트 초보 사용자를 위한 정보를 공유합니다.

Copyright © GNUSTUDY. All rights reserved.
상단으로