게시판에 시간별 정렬 기능을 추가했습니다.
FreeBoard 게시판의 리스트 화면에서 상단을 보시면 '시간별 정렬'이라는 바가 보일 거예요.
그걸 누르시면 게시물들이 시간별로 정렬됩니다.
시간별 정렬 후에는 다시 '쓰레드 정렬' 바로 변환되어
원래 화면으로 돌아올 수 있습니다.
시간별 정렬은 게시물들을 작성 시간대로 출력하는 것이고,
쓰레드 정렬은 게시물들을 계층적인 구조에 따라서 출력하는 원리입니다.
과거 PC통신 시대에는 시간별 정렬이 대세를 이루었지만
요즘 인터넷 시대에는 쓰레드 정렬이 대세를 이루고 있죠.
원리는 어렵지 않지만 NeoBoard 자체의 변수가 워낙 꼬여 있어
require 따라가면서 소스 분석하는 데만도 꽤 시간이 걸렸네요. --;
NeoBoard는 아무리 봐도 제가 본 최고의 게시판입니다. --;
어찌나 복합하고 정교한지...
특히 엄청난 기능을 하나에 담다 보니
계층적인 구조 또한 엄청나져서 사소한 것 하나 수정하려 해도
끊임없이 소스를 파고 들어야할 뿐더러
게다가 Perl로 작성되어 있어서 그 복잡함은 배가 됩니다. --+
쓰인 변수만 해도 수 백 가지가 넘을 것 같더군요. --;
혹 직접 수정하셔서 쓰실 분들을 위해 제가 택한 방법을 말씀드리자면
두 가지 방법이 생각났었는데,
우선 첫 번재는 ./lib/NeoTemplate-lib.pl 파일과
./data/DB_Name/.NeoIndex/NeoDefault.conf 파일,
그리고 NeoBoard.cgi 파일 자체를 고치는 것입니다.
NeoTemplate-lib.pl 파일의 원하는 부위를 찾아서
쓰레드나 시간별 정렬을 선택할 수 있는 버튼을 만들어 줍고,
NeoDefault.conf 파일의 SortMethod= 부분에
쓰레드는 T를, 시간별은 D를 입력해야 합니다.
이것을 자동으로 만들어 주기 위해서 NeoBoard.cgi 파일을 수정해야 하는데
NeoBoard.cgi에서 쓰레드, 시간별을 선택할 때마다
NeoDefault.conf 파일을 읽어온 후 SortMethod 부분을 수정 후 다시 저장하면 되겠죠.
그 방법의 장점으로는 기존의 파일 관계를 그대로 유지하기 때문에
혹 모를 오류를 최소화할 수 있다는 데에 있습니다.
반면 NeoTemplate-lib.pl 파일을 수정함으로써
특정 게시판이 몇 개가 아니라 NeoBoard 전체를
시간별, 쓰레드 정렬이 가능하도록 만들어 버려야 하고,
또 unix/linux 상황에서는 .NeoIndex 하위 디렉토리가 보이기 않기 때문에
처음엔 조금 더 고생해야 할 지도 모르겠네요. 저야 NT 유저. --;
두 번째 방법으로는 NeoBoard.cgi 파일을
시간별, 쓰레드 정렬을 이용할 게시판 단위로 만들어 주는 것입니다.
이 경우 NeoBoard.cgi 뿐만 아니라
NeoDefault.conf, NeoTemplate-lib.pl 파일 모두 따라 만들어 주는 것이 좋습니다.
NeoBoard 자체가 워낙 잘 짜여져 있어서
특정 파일의 경로를 바꾸더라도 지정만 잘 해주면 아무런 문제 없이 잘 돌아가나
게시판 양에 따라 파일이 중복되어 증가한다는 단점이 있겠죠.
만드는 방식은 첫 번째와 동일합니다.
다만 세 개의 파일을 다른 이름으로 저장하여
게시판마다 다르게 실행을 시켜야 하죠.
저는 두 번째 방법을 썼습니다.
NeoBoard를 폭넓게 이용하고 있는 상황에서
모든 게시판을 다 시간별, 쓰레드 정렬로 바꾸기엔 다소 무리가 있어서 말입니다.
어쨌든 오늘,
그간 시간 나면 꼭 수정해야지 하고 벼르던 것들,
온라인견적서랑 초기화면이랑 끝으로 이 게시판까지
모조리 끝내놓을 수 있어서 꽤나 후련하네요. ^^
혹 문제가 생긴다면 알려주시구요.
예제는 http://achor.net/board/acBoard.cgi?Db=freeboard 에서 보실 수 있습니다.
ps.
1. Template를 사용하지 않은 경우도 별다르진 않을 겝니다.
NeoBoard.cgi 파일 보시면
if 문으로 Template 사용하는 경우와 사용하지 않는 경우를 나눠놓았는데
저야 Template를 사용하기에 직접 해보지는 않았지만
마찬가지로 NeoTemplate-lib.pl 파일이나 그 주위의 파일을
조금 수정해 주면 될 것 같네요.
2. 제가 말씀드린 두 번째 경우로 수정을 했을 경우
Reload나 많은 페이지를 거친 후에 List를 누르면
기존의 NeoBoard.cgi로 돌아가는 경우가 생깁니다.
이는 NeoBoard 자체가 그런 경우 다시금 고정적인 NeoBoard.cgi를 불러오기 때문인데
이 같은 현상을 완벽하게 없애고 싶다면 첫 번째 방법을 사용하시든가
./lib/NeoBoard-lib.pl 파일을 수정해야 할 것입니다.
이 경우 따로 NeoBoard-lib.pl 파일을 만들지 않으면
NeoBoard 전체가 변하게 되니 주의하세요.
그렇지만 게시판 링크가 보이는 상황에서 굳이 그럴 필요는 전혀 없다고
개인적으로 생각합니다.
3. 아주 간단한 방법으로, 디자인은 좀 구리겠지만
게시판의 구조는 그대로 두고 배너가 들어가는 게시판 윗부분이나
서명이 들어가는 게시판 밑부분에 NeoSearch.cgi 파일을 이용하여 수정할 수도 있습니다.
검색어를 부분검색명령인 ^로 주고 공백을 검색시키면,
곧 ^만으로 검색을 시키면 불완전하나마 쉽게 시간별 정렬을 할 수 있죠.
다만 이 경우 페이지를 넘김에 따라 빈 공간이 발생한다거나
정확하지 않은 데이터 출력이 생기기도 하니 완전한 방법은 아닙니다. - achor WEbs. achor
|
Please log in first to leave a comment.
|
|