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

본문 바로가기
사이트 내 전체검색

아이디비번찾기

최신글스킨 강좌

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

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

페이지 정보

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

첨부파일

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.
상단으로