wr_4를 기준으로 정렬하고 싶습니다.
본문
wr_4 는 날짜를 넣는 곳입니다.
2025-01-02 의 형식으로 되어있습니다.
게시물의 정렬을 이 wr_4를 기준으로 하고싶습니다.
(빠른 날짜가 위로 오게 하고 싶습니다.)
관리자설정에서는 wr_4로 정렬하는거는 안나와있네요
어디를 어떻게 바꾸면 될까요?
답변 2
extend폴더에 wr_4_extend.php 하나 만드시고, 아래 코드 넣은뒤 관리자설정에 보면 나올겁니다
add_replace('get_board_sort_fields','add_board_sort_fields_wr4',0,1);
function add_board_sort_fields_wr4($arr{
$arr[] = array('wr_4 desc, wr_num, wr_reply', 'wr_4 내림차순');
return $arr;
}
※ 관리 화면 정렬 옵션 없이, (커스텀 코드 있는 프로젝트)
간단히 list.php에서 SQL만 수정하는 방식으로
특정 게시판에서 wr_4를 기준으로 빠른 날짜 순(오름차순) 정렬 방법.
*/bbs/list.php에서 SQL 쿼리를 수정하여 wr_4를 기준으로 정렬하도록 변경
$sql = "SELECT * FROM `{$write_table}` WHERE wr_is_comment = 0 ";
if (preg_match('/^[a-zA-Z0-9_]+$/', $bo_table) && $bo_table === 'your_board_id') {
$sql .= " ORDER BY wr_4 ASC, wr_num, wr_reply";
} else {
$sql .= " ORDER BY wr_num, wr_reply";
}
- wr_4 ASC를 추가하여 빠른 날짜가 위로 오도록 설정
- wr_num 및 wr_reply를 유지해 기본 정렬 방식과의 호환
*특정 게시판에서만 적용하려면 bo_table 값으로 조건을 추가
// 특정 게시판 조건 추가
if ($bo_table === 'your_board_id') { // 'your_board_id'를 대상 게시판 ID로 변경
$sql .= " ORDER BY wr_4 ASC, wr_num, wr_reply";
} else {
$sql .= " ORDER BY wr_num, wr_reply"; // 기본 정렬 방식
}
※ 그누보드의 순정 구조를 최대한 유지하면서도,
업그레이드 시 코드 충돌을 방지하는 가장 안정적인 방법.
1. /extend/extend_wr4_sort.php 파일을 생성
<?php
if (!defined('_GNUBOARD_')) exit;
add_replace('get_board_sort_fields', 'add_board_sort_fields_wr4', 0, 1);
function add_board_sort_fields_wr4($arr) {
$arr[] = array('wr_4 ASC, wr_num, wr_reply', 'wr_4 오름차순');
$arr[] = array('wr_4 DESC, wr_num, wr_reply', 'wr_4 내림차순');
return $arr;
}
- wr_4 필드가 데이터베이스에 존재하며, DATE 형식으로 저장되어 있어야 함.
- 만약 필드가 없거나 데이터 형식이 다르면 정렬이 제대로 작동하지 않을 수 있음.
2. get_board_sort_fields 함수에 새로운 정렬 옵션을 등록
*lib/common.lib.php의 get_board_sort_fields() 함수에서 정렬 옵션을 추가
function get_board_sort_fields() {return array(
array('wr_num, wr_reply', '기본'),
array('wr_hit desc, wr_num, wr_reply', '조회수'),
array('wr_subject asc, wr_num, wr_reply', '제목'),
);
}
function get_board_sort_fields() {
return array(
array('wr_num, wr_reply', '기본'),
array('wr_hit desc, wr_num, wr_reply', '조회수'),
array('wr_subject asc, wr_num, wr_reply', '제목'),
array('wr_4 ASC, wr_num, wr_reply', 'wr_4 오름차순'), // 추가된 정렬 옵션
array('wr_4 DESC, wr_num, wr_reply', 'wr_4 내림차순') // 추가된 정렬 옵션
);
}
답변을 작성하시기 전에 로그인 해주세요.