리스트 정렬 필드를 여분필드값 기준으로 정렬하는 방법 - 게시판스킨강좌, 그누보드5강좌

본문 바로가기
전체검색

게시판스킨강좌

그누보드, 영카트 초보 제작자분들을 위한 다양한 스킨 제작 활용 팁을 공유합니다.

리스트 정렬 필드를 여분필드값 기준으로 정렬하는 방법

관리자 17-09-14 02:42

cc46ae4983a409d2eb321da33c6c7c1f_1505324929_7316.png
 

 

게시판 설정에 있는 여러 기능 중에 리스트 정렬 필드 선택 옵션이 있습니다.

다양한 항목들로 선택해서 변경할 수가 있는데 아쉽게도 여분 필드는 없네요.

리스트를 여분 필드값 기준으로 정렬하는 방법을 살펴보겠습니다.



그누보드 5.4 버전과 그누보드 5.3 이하 버전은 수정 위치가 다릅니다. 


현재 사용 중인 버전이 5.4 버전 이상이라면..

adm/board_form.php 파일에 적용해야 할 부분 파일 위치가 변경되었으니 lib/get_data.lib.php 파일에 적용하세요.



수정 파일 : 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 내림차순'),




현재 사용 중인 버전이 5.3 이하 버전이라면..


수정 파일 : adm/board_form.php

 

파일 내용 중에 다음과 같은 부분이 있습니다.

 

<select id="bo_sort_field" name="bo_sort_field">

    <option value="" <?php echo get_selected($board['bo_sort_field'], ""); ?>>wr_num, wr_reply : 기본</option>

    <option value="wr_datetime asc" <?php echo get_selected($board['bo_sort_field'], "wr_datetime asc"); ?>>wr_datetime asc : 날짜 이전것 부터</option>

    <option value="wr_datetime desc" <?php echo get_selected($board['bo_sort_field'], "wr_datetime desc"); ?>>wr_datetime desc : 날짜 최근것 부터</option>

    .......................................

    .......................................

 

 

해당 부분에 여분 필드값 정렬 옵션도 이렇게 추가합니다.

 

<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>
 


※ 참고 사항

wr_1+0 이렇게 뒤에 +0을 해준 이유는 여분 필드가 문자형이라서 숫자 정렬에 문제가 생기기 때문입니다.

참고 : https://sir.kr/g4_tiptech/1453 




그누보드 버전에 맞게 수정하신 후 게시판 설정 > 리스트 정렬 필드에서 추가한 옵션으로 선택합니다.

 

cc46ae4983a409d2eb321da33c6c7c1f_1505320101_517.gif

 

 

 

 

## 추가 내용 ##

 

목록 타이틀에서 클릭했을 때 정렬하는 방법입니다.

 

992d3d7a002bca7f8c7578562b29982c_1505366295_8981.gif

 

예를 들어 순위 글자를 클릭했을 때 정렬을 바꾸는 방법이죠.

 

수정 파일1 : 게시판 스킨 list.skin.php

 

타이틀 부분을 이렇게 변경합니다.

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

 


수정 파일2 : bbs/list.php

 

아래 부분에 wr_1 을 추가합니다.

$sst = preg_match("/^(wr_datetime|wr_hit|wr_good|wr_nogood|wr_1)$/i", $sst) ? $sst : "";

 

수정하고 확인하면 처음에 말했던 것처럼 문자형이라서 정렬이 안 맞을 겁니다.

여기도 마찬가지 방법으로 수정합니다.

 

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} ";

    }

}

 

수정 후 정렬이 맞는지 클릭해보면서 다시 확인.

로그인 후 댓글 작성 가능합니다.

로그인

로그인 후 글 작성 가능합니다.
그누스킨닷컴

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

E-MAIL : gnustudy@naver.com / 카카오톡 : gnustudy / 텔레그램 : gnustudy
제작 문의를 제외한 일반 문의는 QA 게시판을 이용해주세요.

Copyright gnustudy.com All rights reserved.