https://xetown.com/tips/1075021 여기나온 팁을 기반으로 현재 라이믹스에 맞게 고쳐보았습니다.

 

기본 코드

{@
$oDB = DB::getInstance();
$cmt_stmt = $oDB->query('SELECT comment_srl FROM comments WHERE document_srl = ? ORDER BY regdate', $oDocument->document_srl);
$cmt_result = $cmt_stmt->fetchAll();
$cmt_no = array();
foreach($cmt_result as $cmt):
    $cmt_no[] = $cmt->comment_srl;
endforeach;
$cmt_no = array_flip($cmt_no);
}

 

번호는 아래와 같이 가져올 수 있습니다

{$cmt_no[$comment->comment_srl]+1}

 

PHP 8.0 이상에서, 닉네임이 익명으로 시작할 경우 번호를 댓글 순서대로 붙이는 코드입니다.

{str_starts_with($comment->getNickName(), '익명') ? '익명'.($cmt_no[$comment->comment_srl]+1) : $comment->getNickName()}

 

단점. 중간에 댓글이 삭제될 경우 번호가 변경될 수 있습니다.

번호 유지가 필요한 경우 댓글 똥남기기 등으로 댓글 자리를 남겨둘 필요가 있습니다.

글쓴이 리버스

profile
모듈 제작하는 현역 대학생 리버스입니다!

== 판매중인 모듈 ==
미션] https://xetown.com/thirdparties/1511787
길드] https://xetown.com/thirdparties/1387146
  • profile
    comment_srl 를 member_srl로 변경하면 비회원은 마킹이 안되지만 더 정확해집니다
  • profile

    가장 확실한 방법은 별도의 테이블에 순서를 기록해 두는 것이지요. ㅎㅎ

    같은 사람이 대댓글이나 다른 댓글을 달았을 때 같은 익명닉으로 맞춰 줄 수도 있고요.

  • profile profile
    documents 테이블에서처럼 comments 테이블에도 extra_vars 컬럼을 넣으면 효율성이 떨어질까요?
    큰 문제가 안 된다면 다양한 용도로 활용해볼 수도 있을 것 같아서요.
  • profile profile

    documents 테이블의 extra_vars 컬럼은 별도의 테이블로 분리된 지 오래입니다. 여전히 컬럼이 존재하는 이유는 10여년 전의 흔적 + 그 컬럼을 다양하게 활용하는 기존 자료들을 배려하기 위해서일 뿐, 새 데이터를 저장하는 것은 권장하지 않습니다. extra_vars 컬럼을 활용하는 자료들끼리도 서로 충돌이 일어나는 판이라... 만약 댓글에 확장변수를 지원하게 된다면 처음부터 별도의 테이블로 만들고, extra_vars 컬럼을 추가하지는 않을 거예요.

    위에서 논의하던 기능을 지원하는 데도 댓글 확장변수는 필요하지 않지요. 익명닉 몇 번까지 부여되었는지 확인하기 위해 모든 댓글의 확장변수를 열어보고 최대값+1 하실 건가요? 그건 오히려 비효율적이잖아요. 차라리 문서 단위로 정보를 저장하겠지요. 실제로 활용도가 낮은 trackback_count 컬럼을 이런 용도로 활용하는 사이트도 본 적이 있습니다.

  • profile profile
    어떤 말씀인지 알겠습니다. 클리어해졌습니다!