BOARD

강좌·기초

그누보드 게시판 목록 여분 필드 기준 정렬 방법

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 13회 작성일 26-10-04 15:00

본문

그누보드 게시판 목록 여분 필드 기준 정렬 방법

그누보드 게시판 설정과 소스 수정을 통해 wr_1 등 여분 필드 값을 기준으로 목록을 오름차순 또는 내림차순 정렬하고 숫자 정렬 오류를 해결하는 방법을 안내합니다.

그누보드 버전별 게시판 여분 필드 정렬 옵션 추가 방법

그누보드에서 게시판 목록을 여분 필드(wr_1 등) 기준으로 오름차순 및 내림차순 정렬하려면, 현재 사용 중인 그누보드 버전에 따라 수정할 파일이 다릅니다.

1. 그누보드 5.4 버전 이상

  • 수정 파일: lib/get_data.lib.php
  • 확인 위치: function get_board_sort_fields($board=array(), $make_key_return='') 함수를 찾은 후 아래 코드를 추가합니다.
array('wr_1+0 asc', 'wr_1 오름차순'),
array('wr_1+0 desc', 'wr_1 내림차순'),

2. 그누보드 5.3 이하 버전

  • 수정 파일: adm/board_form.php
  • 확인 위치: 파일 내용 중 <select id="bo_sort_field" name="bo_sort_field"> 영역 내부의 옵션 목록에 아래 코드를 추가합니다.
<option value="wr_1+0 asc" <?php echo get_selected($board['bo_sort_field'], "wr_1+0 asc");?>>wr_1 asc: wr_1 오름차순</option>
<option value="wr_1+0 desc" <?php echo get_selected($board['bo_sort_field'], "wr_1+0 desc");?>>wr_1 desc: wr_1 내림차순</option>

3. 필수 참고 및 다음 행동

  • 숫자 정렬 조건: 여분 필드가 기본적으로 문자형으로 정의되어 있어 그냥 정렬하면 순서가 꼬일 수 있으므로, 값 뒤에 +0을 붙여(wr_1+0) 숫자 기준으로 정렬되도록 지정합니다.
  • 다음 행동: 코드를 수정한 후 관리자 페이지의 게시판 설정 > 리스트 정렬 필드에서 새로 추가한 여분 필드 정렬 옵션을 선택하고 저장해야 적용됩니다. (일부 환경에서는 캐시나 설정 반영 시차로 인해 즉시 적용되지 않을 수 있으므로 확인이 필요합니다.)

여분 필드 숫자 정렬 방법

그누보드에서 여분 필드(예: wr_1)는 기본적으로 문자형(varchar)으로 정의되어 있어, 단순 정렬 시 '10'이 '2'보다 앞서 배치되는 등의 순서 오류가 발생합니다. 이를 숫자로 올바르게 인식하여 정렬하려면 정렬 키 지정 시 필드명 뒤에 +0을 붙여야 합니다.

적용 코드 예시

  • 관리자 설정 배열 또는 옵션 추가 시
    array('wr_1+0 asc', 'wr_1 오름차순')
    array('wr_1+0 desc', 'wr_1 내림차순')
    또는 HTML <option> 태그 사용 환경:
    <option value="wr_1+0 asc">wr_1 asc: wr_1 오름차순</option>
    <option value="wr_1+0 desc">wr_1 desc: wr_1 내림차순</option>
  • bbs/list.php 파일의 sql_order 조건 처리 시
    if ($sst) {
    if ($sst == 'wr_1') {
    $sql_order = " order by wr_1+0 {$sod} ";
    } else {
    $sql_order = " order by {$sst} {$sod} ";
    }
    }

참고 사항

  • wr_1+0 형태를 적용하는 이유는 여분 필드가 문자형이기 때문에 발생하는 숫자 정렬 문제를 해결하기 위함입니다.

게시판 목록 타이틀 클릭 시 여분 필드 정렬 설정 방법

게시판 목록의 타이틀(예: 순위 글자 등)을 클릭했을 때 여분 필드(wr_1) 기준으로 오름차순 및 내림차순 정렬이 전환되도록 하려면 스킨 파일과 코어 파일을 수정해야 합니다.

1. 게시판 스킨 수정 (list.skin.php)

게시판 스킨 폴더 내의 list.skin.php 파일에서 타이틀 부분을 찾아 subject_sort_link 함수를 적용합니다.

<th scope="col"><?php echo subject_sort_link('wr_1', $qstr2, 1)?>순위</a></th>

2. 목록 처리 파일 수정 (bbs/list.php)

bbs/list.php 파일에서 정렬 필드 허용 목록과 sql_order 조건을 수정합니다.

정렬 대상 필드 추가

아래 코드를 찾아 wr_1을 추가합니다.

$sst = preg_match("/^(wr_datetime|wr_hit|wr_good|wr_nogood|wr_1)$/i", $sst)? $sst: "";
SQL 정렬 조건(sql_order) 분기 처리

조금 더 아래에 있는 sql_order 관련 부분을 찾아 wr_1 선택 시 wr_1+0 연산이 적용되도록 변경합니다. 여분 필드가 문자형으로 저장되어 있어 숫자 정렬 시 순서가 꼬이는 문제를 방지하기 위해 +0 처리를 더해줍니다.

if ($sst) {
 if ($sst == 'wr_1') {
 $sql_order = " order by wr_1+0 {$sod} ";
 } else {
 $sql_order = " order by {$sst} {$sod} ";
 }
}

3. 확인 사항

수정을 마친 후 게시판 목록에서 해당 타이틀을 클릭하며 오름차순과 내림차순 정렬이 올바르게 전환되는지 확인합니다.

상황별 판단 및 행동 가이드

  • 내 상황: 그누보드 게시판 목록을 여분 필드(wr_1 등) 기준으로 정렬하고 싶음
  • 선택 기준: 사용 중인 그누보드 버전에 따라 5.4 이상(lib/getdata.lib.php) 또는 5.3 이하(adm/boardform.php) 파일 확인
  • 다음 행동: 버전별 정렬 배열 또는 옵션 추가 후 숫자 정렬 오류 방지를 위해 wr_1+0 적용, 관리자 설정에서 정렬 옵션 선택 및 저장

실전 FAQ

Q. 여분 필드로 정렬했을 때 숫자가 '10', '2', '3' 순서로 꼬이는 이유는 무엇인가요?

  • 예외: 여분 필드는 문자형(varchar)으로 저장되어 문자열 기준으로 정렬됩니다.
  • 대안: 정렬 키 지정 시 필드명 뒤에 +0을 붙여(예: wr_1+0 asc) 숫자로 자동 형변환되도록 처리하십시오.

Q. 관리자 설정에서 코드를 추가했는데도 게시판 목록 정렬이 반영되지 않습니다.

  • 막히는 지점: 코드 수정 후 게시판 설정값이 자동으로 갱신되지 않는 경우입니다.
  • 대안: 관리자 페이지의 [게시판 설정 > 리스트 정렬 필드]에서 새로 추가한 옵션을 다시 선택하고 저장해야 합니다.

함께 보면 좋은 글

참고자료

기타 참고자료

댓글목록

등록된 댓글이 없습니다.