웹마스터 팁
댓글을 역순으로 출력하는 팁 (최근댓글이 가장 위에)
2012.02.10 22:02
아마도 많은 분들이 궁금해하셨을만한 기능일듯한데.. 몇년이 지나도 이상하게 아직 관련된 팁이 안 올라오네요
예전에 만들어뒀던 팁인데... 아직까지 관련글이 안 올라오길레 공개해둡니다 ^^
현재 게시판의 댓글들은... 무조건 시간순으로 노출이 됩니다.
그나마 댓글이 한 페이지 내에서 다 나오면, 마우스 스크롤로 쭉 내려서 보면 되지만..
골치아픈건, 댓글수가 설정해둔 한페이지 개수를 넘어갔을때... 굉장히 보기 안 좋게 나오는점이죠 ^^;
공개하는 팁은.. 댓글 역순 출력기능입니다. (최근댓글이 가장 위에 나오는거죠)
불가피하게 Core 도 수정해야하고, query 도 하나 추가해야하지만..
찬찬히 따라해보시면 아마 무사히 적용가능하실겁니다.
단지 이 팁 자체는 1.4 에서 만들어진거여서 1.5에서 테스트는 안 해봤는데, 뭐.. 아마 될꺼예요 ^^;;;
(확인해보니 1.5 에서는 // 정해진 수에 따라 목록을 구해옴 문구가 영어로 // get a list of comments 로 되어있네요)
XE 사용에 도움 되시길 바라면서.. ^^
============ 댓글 역순으로 하는 방법 ============
1. modules/comment/comment.model.php 에서
function getCommentList($document_srl, $page = 0, $is_admin = false, $count = 0) { 함수 내부에서
if(!$page) $page = (int)( ($oDocument->getCommentCount()-1) / $comment_count) + 1;
// 정해진 수에 따라 목록을 구해옴
$args->document_srl = $document_srl;
$args->list_count = $comment_count;
$args->page = $page;
$args->page_count = 10;
$output = executeQueryArray('comment.getCommentPageList', $args);
부분을 찾아서... 아래처럼 수정할것 (빨간색 부분에, 댓글 역순으로 출력할 게시판 mid 값으로 바꿔주세요)
// 정해진 수에 따라 목록을 구해옴
$args->document_srl = $document_srl;
$args->list_count = $comment_count;
$args->page = $page;
$args->page_count = 10;
// 페이지 역순 기능 위해서 수정 (sejin7940)
if(Context::get('mid')=="board_chat") {
if(!Context::get('cpage')) $args->page=1; // 120725 수정부분 (가장 최신 댓글이 있는 첫 페이지가 디본이 되도록)
$output = executeQueryArray('comment.getCommentPageListReverse', $args);
}
else {
if(!$page) $page = (int)( ($oDocument->getCommentCount()-1) / $comment_count) + 1;
$output = executeQueryArray('comment.getCommentPageList', $args);
}
2. modules/comment/queries/getCommentPageListReverse.xml 파일을 추가할 것
<query id="getCommentPageListReverse" action="select">
<tables>
<table name="comments" alias="comments" />
<table name="comments_list" alias="comments_list" />
</tables>
<columns>
<column name="comments.*" />
<column name="comments_list.depth" alias="depth" />
</columns>
<conditions>
<condition operation="equal" column="comments_list.document_srl" var="document_srl" notnull="notnull" pipe="and" />
<condition operation="equal" column="comments_list.comment_srl" var="comments.comment_srl" filter="number" pipe="and" />
<condition operation="more" column="comments_list.head" default="0" pipe="and" />
<condition operation="more" column="comments_list.arrange" default="0" pipe="and" />
</conditions>
<navigation>
<list_count var="list_count" default="list_count" />
<page_count var="page_count" default="10" />
<page var="page" default="1" />
<index var="sort_index" default="head" order="desc" />
<index var="sort_index" default="comments_list.depth" order="asc" />
</navigation>
</query>
댓글 8
-
이지데브
2012.02.11 12:33
-
감사합니다.
멋진 팁입니다.
처음엔 헷갈려 망설렸는데 수정하니 잘 되네요.
-
라싸
2012.09.30 12:17
좋은 팁 고맙습니다 :)
-
흠... 1.5인데 안되는 것 같습니다.
모듈네임 정확하게 써줬는데 ,,
-
언제나즐기자
2017.01.06 10:08
좋은 팁 감사합니다.
스케치북 게시판 쓰고 있는데, 2017년 현재 XE 1.8.27 버전에서도 적용이 되네요.
-
언제나즐기자
2017.01.06 10:36
1번에서는 모든 게시판의 댓글을 다 역순으로 하기 위해서 조건문을 제거하고,
$args->page=1;
$output = executeQueryArray('comment.getCommentPageListReverse', $args);이 부분만을 넣었더니 역순으로 잘 적용이 되었습니다.
-
대암지기
2017.01.25 14:51
xe ver. 1.8.29에 적용해도 문제는 없습니다.
이 팁을 적용하고 대댓글을 작성하면, 대댓글 정렬이 엉키어 버립니다.
-
forest535
2018.03.17 14:51
1.9x + 스케치북 아주 자~~알됩니다. 대댓글도 엉키지 않네요.
그러나 댓글을 페이지로 나뉘었을때, 새댓글을 등록하면 새 댓글이있는 1페이지가 로드되지않고 마지막페이지가 로드되네요 ㅜ
감사합니다 ^^
좋은팁 항상 감사합니다.!!
보드스킨 역순이 필요했는데 코어수정뿐이 방법이 없나보군요.. 으~