게시판 게시물 상단고정(우선 배치) 한줄 간편 소스, 강제 끌어올림, 끌올 정보
게시판 게시물 상단고정(우선 배치) 한줄 간편 소스, 강제 끌어올림, 끌올본문
특정 게시판에서 특정 게시물을 '공지' 를 활용하지 않고 최상단에 배치하고 싶을 때 mysql 의 order by 쿼리문을 통해 정렬 순서를 조정하는 방법입니다. 예를 통해 설명하겠습니다.
예시.
자유게시판(free)에서 '그누보드'라는 키워드가 제목(wr_subject)에 포함된 게시물을 우선 뿌려지도록 하기.
1. extend 파일 생성
/extend/dings_bbs_lift.php 처럼 extend 디렉토리에 php 파일 생성.
2. 생성한 파일 내용 작성
if ($bo_table === 'free') $board['bo_sort_field'] = 'wr_subject LIKE "%그누보드%" desc, '.$board['bo_sort_field'];
3. 끝
--------------------------------------------------------------------------------------------------
작동 원리.
게시판 설정 페이지 보면 정렬 방법을 어떻게 할지 설정하는 부분이 있습니다.
그 게시판 설정값을 common.php 에서 읽어 들이고, 게시판 목록에서 사용할 때 bbs/list.php 에서
$sst 변수에 담게 되는데요. $sst 변수에 담기 전, 설정된 값을 중간에서 가로채 정렬 방법을 변경하는 원리입니다.
common.php 를 보면
448 라인 쯤, 게시판의 설정을 불러들이는 $board 변수를 읽어온 후에
59 라인 정도에서 extend 파일을 읽어옵니다.
따라서 나중에 읽는 extend 파일을 통해 $board의 정렬 관련 변수의 내용 $board['bo_sort_field'] 를
변경해주는 것입니다.
if ($bo_table === 'free') $board['bo_sort_field'] = 'wr_subject LIKE "%그누보드%" desc, '.$board['bo_sort_field'];
"만약 자유게시판이라면 제목에 그누보드가 포함된 내용을 정렬한 다음 게시판 설정 정렬값으로 정렬해라." 라는 의미에요.
'wr_subject LIKE "%그누보드%" desc, '
이 부분에서 먼저 정렬되기를 원하는 규칙을 넣어주시면 됩니다. 우선순위가 단계별로 여러가지가 있을 땐 '규칙1, 규칙2, ' 이렇게 넣어도 되겠죠.
더 좋은 방법이 있을지도 모르겠지만 급하게 사용하기 좋은 것 같아 공유드립니다~!
ps. 이 원리를 이용하면 여분필드를 이용해 게시글 끌어올림 같은것도 구현하기 좋을 것 같네요.
4