댓글을 역순으로 출력하는 팁 (최근댓글이 가장 위에)

  • sejin7940
  • 2012.02.10 22:02:10
  • 8

아마도 많은 분들이 궁금해하셨을만한 기능일듯한데..  몇년이 지나도 이상하게 아직 관련된 팁이 안 올라오네요

예전에 만들어뒀던 팁인데... 아직까지 관련글이 안 올라오길레 공개해둡니다 ^^

 

현재 게시판의 댓글들은...  무조건 시간순으로 노출이 됩니다.

그나마 댓글이 한 페이지 내에서 다 나오면, 마우스 스크롤로 쭉 내려서 보면 되지만..

골치아픈건,  댓글수가 설정해둔 한페이지 개수를 넘어갔을때...  굉장히 보기 안 좋게 나오는점이죠 ^^;

 

공개하는 팁은..   댓글 역순 출력기능입니다.  (최근댓글이 가장 위에 나오는거죠)

불가피하게 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>

 

 

 

TagList

  • Doesn't exist

AttachmentFile List

  • Doesn't exist
목록으로 돌아가기
Write a comment
Comment List [8]
  • 이지데브

    좋은팁 항상 감사합니다.!!

    보드스킨 역순이 필요했는데 코어수정뿐이 방법이 없나보군요.. 으~

    Comment Feb 11, 2012

  • sorigongan

    감사합니다.

    멋진 팁입니다.

    처음엔 헷갈려 망설렸는데 수정하니 잘 되네요.

    Comment Aug 29, 2012

  • 라싸

    좋은 팁 고맙습니다 :)

    Comment Sep 30, 2012

  • BonaSera

    흠... 1.5인데 안되는 것 같습니다.

    모듈네임 정확하게 써줬는데 ,,

    Comment Jul 04, 2013

  • 언제나즐기자

    좋은 팁 감사합니다.

    스케치북 게시판 쓰고 있는데, 2017년 현재 XE 1.8.27 버전에서도 적용이 되네요. 

    Comment Jan 06, 2017

  • 언제나즐기자

    1번에서는 모든 게시판의 댓글을 다 역순으로 하기 위해서 조건문을 제거하고, 

    $args->page=1;   
    $output = executeQueryArray('comment.getCommentPageListReverse', $args);

    이 부분만을 넣었더니 역순으로 잘 적용이 되었습니다.

    Comment Jan 06, 2017

  • 대암지기

    xe ver. 1.8.29에 적용해도 문제는 없습니다.

    이 팁을 적용하고 대댓글을 작성하면, 대댓글 정렬이 엉키어 버립니다.

    Comment Jan 25, 2017

  • forest535

    1.9x + 스케치북 아주 자~~알됩니다. 대댓글도 엉키지 않네요.

    그러나 댓글을 페이지로 나뉘었을때, 새댓글을 등록하면 새 댓글이있는 1페이지가 로드되지않고 마지막페이지가 로드되네요 ㅜ

    감사합니다 ^^

    Comment Mar 17, 2018