리스트 정렬 필드 추가하는법
본문
몇시간을 헤매다 결국 질문 게시판에 남겨봅니다. ㅠㅠ
게시글을 랜덤으로 출력해주고 싶어서 리스트 정렬 필드를 추가하는법 검색을 하였는데요.
그누보드 소스가 바뀐듯 합니다.
이전에 올라온 글에서는 board_form.php 파일에서 아래 값을 추가하라고 되있는데
<option value="rand()" <?php echo get_selected($board['bo_sort_field'], "rand()"); ?>>rand() 랜덤</option>
현재 소스에는 이런부분이 없네요 ㅠㅠ
리스트 정렬 필드에 랜덤으로 출력을 하나 추가하려면 어떤 방법이 있을까요. ㅠㅠ
게시판에 나와있는건 전부다 검색해서 여기저기 소스에 넣어봐도 도저히 안됩니다. ㅠ
답변 2
참고 https://gnustudy.com/bbs/board.php?bo_table=skin_board&wr_id=270
최신 버전에서는 수정 위치가 변경되었네요.
아래 파일에서 추가하세요.
lib/get_data.lib.php
function get_board_sort_fields($board=array(), $make_key_return=''){
위 함수를 찾은 후 이렇게 추가.
array('rand()', '랜덤으로 정렬'),
bbs/list.php를 보면
// 정렬
// 인덱스 필드가 아니면 정렬에 사용하지 않음
//if (!$sst || ($sst && !(strstr($sst, 'wr_id') || strstr($sst, "wr_datetime")))) {
if (!$sst) {
...
} else {
$board_sort_fields = get_board_sort_fields($board, 1);
if (!$sod && array_key_exists($sst, $board_sort_fields)) {
$sst = $board_sort_fields[$sst];
} else {
// 게시물 리스트의 정렬 대상 필드가 아니라면 공백으로 (nasca 님 09.06.16)
// 리스트에서 다른 필드로 정렬을 하려면 아래의 코드에 해당 필드를 추가하세요.
// $sst = preg_match("/^(wr_subject|wr_datetime|wr_hit|wr_good|wr_nogood)$/i", $sst) ? $sst : "";
// $sst = preg_match("/^(wr_datetime|wr_hit|wr_good|wr_nogood)$/i", $sst) ? $sst : "";
}
}
이런 내용이 있습니다.
rand()가 여기서 걸러지기 때문에 안 되는 것으로 보입니다.
preg_match() 라인을 주석 처리해 보세요.