기본 댓글 위젯은 어떤것을 참고하면 좋을까요?
CMS/프레임워크 | Rhymix 2.0 |
---|---|
개발 언어 | PHP 7.2 |
안녕하세요. 항상 도움주셔서 감사합니다.
자리남기기를 설정해도 삭제된 댓글이 최근글에서 추출되지 않도록 수정하기위해 적용된 기본 스킨을 찾고있습니다.
XE나 라이믹스에 내장된 기본 댓글추출 위젯이 따로 없어 기준을 세우지 못하고있습니다.
혹시 기본 으로 삼을만한 위젯이 있을까요?
https://xe1.xpressengine.com/index.php?mid=download&package_id=18324343
나름 공식자료라고 생각되는 기본 위젯도 삭제된 메시지를 표시하는 것 같습니다.

톰캣
Lv. 11
시대의 흐름에 뒤떨어지지 않도록 아주 천천히지만 노력하고 있습니다.
댓글 16
그래서 라이믹스 코어에서도 content 위젯만 기본 탑재해서 제공하는 것으로 알고 있어요.
아아 기본에서도 추출이 되네요
컨텐츠 위젯 에서도 댓글로 생성 해보니 아쉽게도 삭제된 댓글 자리 남기기의 삭제된것을 안불러오는 기능은 지원을 안하는것 같습니다.
댓글 자리 남기기 기능보다 이전에 만들어진 위젯이어서 그렇겠죠.
아래 댓글 https://xetown.com/questions/1726424#comment_1726432 에서처럼 코어를 살짝 수정해주면 될 것 같습니다.
(코어에 이슈를 넣어야 할지...)
https://github.com/rhymix/rhymix/blob/90d3766e5c6125b263eccc1ecd25a8dea7e1039e/modules/comment/comment.controller.php#L966-L976
여기를 보면 댓글 자리 남기기를 할 경우 댓글의 status값이 다르게 입력되는 것 같은데요.
댓글 목록 쿼리를 실행할 때, 즉 아래 링크 자리 정도에
https://github.com/rhymix/rhymix/blob/90d3766e5c6125b263eccc1ecd25a8dea7e1039e/widgets/content/content.class.php#L198
$obj->status = 1;
같은 것을 삽입해보면 어떨까 싶어요.
물론 직접 해본 것은 아니어서 확신은 없어요 😅
https://github.com/rhymix/rhymix/blob/90d3766e5c6125b263eccc1ecd25a8dea7e1039e/common/constants.php#L143-L156
관리자가 삭제한 댓글은 기본 위젯에서는 정상적으로 안뜨는것 같고 (관리자가 삭제한 댓글 입니다.)
자리 남기기 댓글은 뜨는 것 같네요. (삭제된 댓글 입니다.)
198행에 넣어봤는데 아무 변화는 일어나지 않네요.
댓글 페이지에서도 아마 삭제된 댓글입니다를 표시하기에 같은 옵션인 status 1을 넣어도 똑같이 삭제된 댓글입니다가 나오는게 아닐까 조심스럽게 생각해봅니다
위젯에서 status값을 넣어도 여기서 고정이 되어버리네요;;;
https://github.com/rhymix/rhymix/blob/90d3766e5c6125b263eccc1ecd25a8dea7e1039e/modules/comment/comment.model.php#L394-L406
게시판 관리 > 추가 설정 > 댓글 부분에서 '승인 후 공개' 옵션을 '승인'으로 바꿔보시겠어요?
(아, 근데 이렇게 하면 정작 게시판에서는 댓글 자리 남기기가 안 될 수도 있겠네요ㅜㅜ)
(위젯에서 댓글 모듈의 getNewestCommentList 함수를 가져다 쓰는 게 아니라 새로 쿼리를 만드는 게 나을 수도 있겠어요)
승인 후 공개로 하니 위젯에서 안뜨고 댓글 자리남기기도 되어있긴합니다.
(기존에 제가 쓰고 자리남겼던 댓글 그대로 남아있는것으로 봐서)근데 모든 댓글을 승인할 여력이 없네요ㅠㅜ
댓글 자리 남기기가 안 될 수도 있겠네요ㅜ라고적어주신것처럼 바로 삭제되어버립니다
심지어 같은 게시물에 기존에 댓글 자리남기기 했었던 댓글까지 삭제 되어버렸습니다
다시 원복하시구요;;;
https://github.com/rhymix/rhymix/blob/90d3766e5c6125b263eccc1ecd25a8dea7e1039e/widgets/content/content.class.php#L199-L202
이 부분을 다음과 같이 수정하면 왠지 될 것 같아요. 적어도 조금 더 다듬거나요.
content 위젯이어서 그나마 코어 수정의 부담이 덜하긴 하지만, 그래도 코어 수정은 코어 수정이니 마음이 착잡합니다;;;
if(isset($obj->module_srl) && is_array($obj->module_srl))
{
$obj->module_srl = implode(',', $obj->module_srl);
}
$obj->status = 1;
$_output = executeQuery('comment.getNewestCommentList', $obj);
if(!$_output->toBool())
{
return;
}
$comment_list = $_output->data;
if($comment_list)
{
if(!is_array($comment_list))
{
$comment_list = array($comment_list);
}
$output = [];
foreach($comment_list as $key => $attribute)
{
if(!$attribute->comment_srl)
{
continue;
}
$oComment = NULL;
$oComment = new commentItem();
$oComment->setAttribute($attribute);
$output[$key] = $oComment;
}
$_output->data = $output;
}
if(!is_array($output) || !count($output)) return;
말씀주신것처럼 나름 위젯이지만 코어에 포함된 기본 위젯이니 깃허브 통해서 반영되면 더 좋겠네요.
말씀 주신 것처럼 최신 댓글 추출에 원하는사람이 있을 수도 있긴 있겠네요.
다른 위젯도 수정하려고했는데 코드를 열어보니 제범위를 넘어섰네요.
추천수 댓글 정렬은 포기하고 기본 위젯 명칭을 살짝 바꿔서 다른 위젯명으로 만들어서 사용하겠습니다.
도움주셔서 감사합니다.
내용 정리를 잘 했나 모르겠습니다.
https://github.com/rhymix/rhymix/issues/2035
문과 출신인데도 한국어는 어려워요;;;;
덧. 근데 위젯에서 status를 1로 고정시키는 방식이 바람직하기만 한 것은 아니어서, 코어 개발진이 comment 모듈의 status 관련 건의를 수용한다 해도 위젯의 경우는 위젯 설정(예. '공개된 댓글만 수집'처럼)을 통한 경우에만 status를 1로 고정시키는 게 좋을 것 같기는 해요.
즉, comment 모듈도 일부 수정해야 하고(목록 만드는 쿼리 포함), 위젯도 일부 수정해야 해서, 개발진으로서는 피곤하실 수 있겠다는 생각이 듭니다;;;