채택완료

게시판에 분류를 사용하고 있는데 공지사항 관련 문의입니다..

2018-06-07 (목) 09:54:33 2,017

안녕하세요.

게시판의 분류를 사용하여 

[전체] [메뉴1] [메뉴2] [메뉴3]이런식으로 사용하고 있는데요..

공지사항이 전체에만 나와서 분류 탭에서도 공지사항을 보이기 위해

list.php에 아래와 같은 소스로 공지사항 부분을 출력하고 있습니다.

// 공지 처리
if (!$is_search_bbs) {
    $arr_notice = explode(',', trim($board['bo_notice']));
    $from_notice_idx = ($page - 1) * $page_rows;
    if($from_notice_idx < 0)
        $from_notice_idx = 0;
    $board_notice_count = count($arr_notice);

    for ($k=0; $k<4; $k++) {
        if (trim($arr_notice[$k]) == '') continue;

        $row = sql_fetch(" select * from {$write_table} where wr_id = '{$arr_notice[$k]}' ");

        if (!$row['wr_id']) continue;

        $notice_array[] = $row['wr_id'];

        if($k < $from_notice_idx) continue;

        $list[$i] = get_list($row, $board, $board_skin_url, G5_IS_MOBILE ? $board['bo_mobile_subject_len'] : $board['bo_subject_len']);
        $list[$i]['is_notice'] = true;

        $i++;
        $notice_count++;

        if($notice_count >= $list_page_rows)
            break;
    }
}else if ($sca && !$stx) {

    $arr_notice = explode(',', trim($board['bo_notice']));

    if($page==1){
    for ($k=0; $k<count($arr_notice); $k++) {

        if (trim($arr_notice[$k])=='') continue;

        $row = sql_fetch(" select * from {$write_table} where wr_id = '{$arr_notice[$k]}' and ca_name = '{$sca}' ");

        if (!$row['wr_id']) continue;

        $list[$i] = get_list($row, $board, $board_skin_url, G5_IS_MOBILE ? $board['bo_mobile_subject_len'] : $board['bo_subject_len']);
        $list[$i]['is_notice'] = true;

        $i++;

    }
}
} 

근데 분류에서 글을 12개만 출력하고 싶은데 첫페이지에서 공지사항 개수 + 12개 가 출력되고 있습니다..
첫페이지에서도 공지사항 포함 12개만 나오게 할 수 있을까요?..

답변 2개 / 댓글 6개

채택된 답변
+20 포인트

우선, 원본파일을 저장한 후 
다음 구문 중에서 주석처리한 것을 추가 및 제거를 해 보시면 원하시는 답이 나올 것 같습니다. 잘 응용하여 보십시오~^^)

자유게시판이고 페이지당 목록 수가 20개로 설정이 되어 있다면

// 공지 처리

......

......

$notice_array[] = $row['wr_id'];

    if($bo_table =='free'){
    if($k < $from_notice_idx) continue;
        $list[$i] = get_list($row, $board, $board_skin_url, G5_IS_MOBILE ? $board['bo_mobile_subject_len'] : $board['bo_subject_len']);
        $list[$i]['is_notice'] = true;
        //$i++; // 주석처리 안하면 이상함
        $notice_count++; // 주석처리 안하면 첫페이지 공지+비공지=20개씩 노출, 주석처리하면 첫페이지 공지+비공지=공지+20개씩 노출
        }

        //if($k < $from_notice_idx) continue; //게시판 다음 페이지에도 공지가 보이게 주석처리
        $list[$i] = get_list($row, $board, $board_skin_url, G5_IS_MOBILE ? $board['bo_mobile_subject_len'] : $board['bo_subject_len']);
        $list[$i]['is_notice'] = true;
        $i++;
        //$notice_count++; //게시판 다음 페이지에도 공지가 보이게 주석처리

        if($notice_count >= $list_page_rows)
            break;

답변에 대한 댓글 6개

2018-06-07 (목) 14:28:01
주석처리한 것을 이라고 하시는게.. 어느 주석을 얘기하시는 건가요?..
다음처럼 //로 되어 있는 부분을 잘 보시고 하나하나 적용하여 보십시오~^^)
....
//$i++; // 이부분은 주석처리 하여 주십시오~
$notice_count++; // 첫페이지 = 공지포함 20개 노출
//$notice_count++; // 첫페이지 = 공지+20개 노출
....
if($k < $from_notice_idx) continue; //다음 페이지에는 공지가 안 보임
....
$notice_count++; //다음 페이지에는 공지가 안 보임
또는
//if($k < $from_notice_idx) continue; //다음 페이지에도 공지가 보임
....
//$notice_count++; //다음 페이지에도 공지가 보임
2018-06-07 (목) 15:48:38
else if부분에 적용해야 하는건가요?..
i++을 제거 하는 순간 공지사항 노출이 전혀 안됩니다..
if($bo_table =='free') 이런식으로 가져오면..
[전체] [메뉴1] [메뉴2] [메뉴3] 가 테이블 자체는 모두 같은 테이블 이기 때문에
저 if문을 전부타 탈꺼같은데...아닌가요?..
상황이 좀 다른 것 같습니다.

1. 우선, 다음의 팁을 적용하시고
* 분류 선택시 공지사항 상단 노출 => http://www.gnuwiz.com/board_tip/43

2. 그리고 제가 말씀드린 것을 상황에 맞게 적용하여야 할 것 같습니다.
저도 많이 헤메이다가 지금은 잘 적용하고 있습니다.
바로 적용할 수 있는 도움이 되지 못해서 미안합니다....ㅜㅜ
2018-06-08 (금) 10:49:01
흐아...안되네요...
참고해볼만한 자료가 없을까요..
제가 올린 소스가 올려주신 팁을 적용한 상태입니다..
적용하신 소스를 보여주시긴 어려우실까요?..
2018-06-08 (금) 14:06:50
카테고리 공지사항 부분에서 i++을 안하면

list.skin.php 에서 $list[$i]['is_notice'] 이 값이 안넘어오는거같은데... i++안하고는 방안이 없을까요..
2018-06-07 (목) 14:32:52

참고해볼 수 있는 글입니다. 

* 분류 선택시 공지사항 상단 노출 => http://www.gnuwiz.com/board_tip/43

답변을 작성하려면 로그인이 필요합니다.