index.php 부분 그룹별 최신글 출력 질문입니다.

index.php 부분 그룹별 최신글 출력 질문입니다.

QA

index.php 부분 그룹별 최신글 출력 질문입니다.

본문

현재 검색을 통하여 그룹별 최신글을 출력하는 방법을 알게 되어서 한번 적혀있는대로 하였는데 게시판들이 전혀 뜨질 않네요....

그룹 id를 하나는 test1로 설정을 하고 하나는 test2로 설정을 한뒤 1에는 게시판을 1개만들어놓고 2에는

3개를 만들어놨습니다.

그리고 latest.lib.php부분에 밑의 소스를 추가를 시킨뒤

 

function latest2($skin_dir='', $gr_id, $rows=10, $subject_len=40, $cache_time=1, $options='')

{

    global $g5;

    //static $css = array();

 

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

    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-{$gr_id}-{$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 a.*, b.bo_subject, c.gr_subject, c.gr_id from g5_board_new a, g5_board b, g5_group c where a.bo_table = b.bo_table and b.gr_id = c.gr_id and b.bo_use_search = 1 and c.gr_id = '{$gr_id}' and a.wr_id = a. wr_parent order by a.bn_id desc limit 0, {$rows}";

$result = sql_query($sql);

 

for ($i=0; $row=sql_fetch_array($result); $i++) {

$sql = " select * from {$g5['board_table']} where bo_table = '{$row['bo_table']}' ";

$board = sql_fetch($sql);

$tmp_write_table = $g5['write_prefix'].$row['bo_table'];

$row2 = sql_fetch(" select * from {$tmp_write_table} where wr_id = '{$row['wr_id']}' ");

$list[$i] = $row2;

$list[$i] = get_list($row2, $board, $latest_skin_url, $subject_len);

$list[$i]['subject'] = "[".$row['bo_subject']."] ".$list[$i]['subject'];

$list[$i]['bo_table'] = $row['bo_table'];

}

 

        if($cache_fwrite) {

            $handle = fopen($cache_file, 'w');

            $cache_content = "<?php\nif (!defined('_GNUBOARD_')) exit;\n\$bo_subject='".$bo_subject."';\n\$list=".var_export($list, true)."?>";

            fwrite($handle, $cache_content);

            fclose($handle);

        }

    }

 

    /*

    // 같은 스킨은 .css 를 한번만 호출한다.

    if (!in_array($skin_dir, $css) && is_file($latest_skin_path.'/style.css')) {

        echo '<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">';

        $css[] = $skin_dir;

    }

    */

 

    ob_start();

    include $latest_skin_path.'/latest.skin.php';

    $content = ob_get_contents();

    ob_end_clean();

 

    return $content;

}

 

 

index.php 의 최신글 출력하는 부분에

 

<?php echo latest2('theme/basic', 'test2', 20, 25); ?>

 

이런식으로 적었는데 게시판이 보이질않네요...

 

무슨 문제인지 아시는 분 계시면 부탁드리겠습니다 ㅜ

이 질문에 댓글 쓰기 :

답변 1

해당 게시판 설정에서 전체 검색 사용 체크박스가 체크되었는지 확인.

환경설정 > 캐시파일 일괄삭제.

그래도 안 된다면 스킨명이 제대로 지정되었는지 확인 

(테마를 사용하지 않는데 스킨을 테마로 해놓으면 아예 출력이 안 됩니다.)

<?php echo latest2('theme/basic', 'test2', 20, 25); ?>

 

올려주신 함수 그대로 복사해서 해봤는데 정상 출력됩니다.

답변 감사합니다.

캐시파일 삭제, 모든 게시판 전체 검색 사용 on

현재 작업하고 있는 곳은 theme,  관리자 모드에서 게시판 관리에 스킨부분에도 (테마)basic 되어있는 것을 확인.

흠... 다 확인하고 했는데

이상하게 뜨질않네요...

분명히 게시판 관리의 첫번째 부분에 그룹이라고 되어있는 곳에도 test2라고 3개가 설정이 되어있는데도..

흠...

게시판에 글을 새로 올려보셨나요?
함수 자체는 문제가 없습니다. 그누5 원본에 직접 복사해서 해봤습니다.

안 되면 이걸로도 테스트해보세요. 비슷한 방법의 그룹용 최신글입니다.
http://sir.kr/g5_skin/9441

현재 index.php 부분의 최신글 sql부분을 살펴보면

$sql = " select bo_table
            from `{$g5['board_table']}` a join `{$g5['group_table']}` b on (a.gr_id=b.gr_id)
            where a.bo_device <> 'mobile' ";
 if(!$is_admin){
    $sql .= " and a.bo_use_cert = '' ";
  $sql .= " and a.bo_order < 4 ";
 }


$sql .= " order by b.gr_order, a.bo_order ";
$result = sql_query($sql);

이렇게 되어있고 그 후

for ($i=0; $row=sql_fetch_array($result); $i++) {   
?>
    <div style="float:left;<?php echo $lt_style ?> margin-right: 4%; margin-left: 4%;">
        <?php
  echo latest2('theme/basic', 'test2', 20, 25);
        ?>
    </div>
<?php
}

이런식으로 되어있습니다.  저기 위의 for문에 보면 $row라고 선언이 되어있는데

제가 올린 latest2의 파일에서는 밑의 소스중 list[i]=$row2 이런식으로 설정이 되어있는데

이런 부분에 대해서는 딱히 수정하거나 하지않고 바로

  echo latest2('theme/basic', 'test2', 20, 25); 이것만 쓰면 적용이 되나요??

그룹용 최신글은 index.php 에 있는 이 코드 안에 넣는 게 절대 아니며
아래 내용은 그룹용 최신글 출력 함수와도 전혀 상관없습니다.

<!-- 최신글 시작 { -->
<?php
//  최신글
$sql = " select bo_table
            from `{$g5['board_table']}` a left join `{$g5['group_table']}` b on (a.gr_id=b.gr_id)
            where a.bo_device <> 'mobile' ";
if(!$is_admin)
    $sql .= " and a.bo_use_cert = '' ";
$sql .= " order by b.gr_order, a.bo_order ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++) {
    if ($i%2==1) $lt_style = "margin-left:20px";
    else $lt_style = "";
?>
    <div style="float:left;<?php echo $lt_style ?>">
        <?php
        // 이 함수가 바로 최신글을 추출하는 역할을 합니다.
        // 사용방법 : latest(스킨, 게시판아이디, 출력라인, 글자수);
        // 테마의 스킨을 사용하려면 theme/basic 과 같이 지정
        echo latest("basic", $row['bo_table'], 5, 25);
        ?>
    </div>
<?php
}
?>
<!-- } 최신글 끝 -->


출력 위치가 위 php 코드 안에 있으면 절대 안 되며 단독으로 이렇게만 사용해야 합니다.
<?php echo latest2('스킨명', '그룹id', 20, 25); ?>
<?php echo latest2('theme/basic', 'test2', 20, 25); ?>

제가..못하는건지 안되네여 ㅜㅜ 일단은 편법으로 해당 게시판 그룹별로 출력순서를 줘서 index.php 부분의 sql부분에 명령어를 줘서 해결했습니다. 답변해 주셔서 감사하고 그룹별 출력에 관해서는 조금 더 공부를 해야할것 같습니다.! 좋은 하루 되세여 ^_^

답변을 작성하시기 전에 로그인 해주세요.
전체 93
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT