안녕하세요.
비밀댓글 최신댓글 추출시 노출 되는 증상이 있습니다.
혹시 비밀 댓글일 경우 최신 댓글 추출을 막는 방법이 있을까요?
감사합니다.
PHP | PHP 7.2 |
---|---|
CMS | Rhymix 2.0 |
안녕하세요.
비밀댓글 최신댓글 추출시 노출 되는 증상이 있습니다.
혹시 비밀 댓글일 경우 최신 댓글 추출을 막는 방법이 있을까요?
감사합니다.
우선 아래 위젯을 가공하려고합니다.
https://xe1.xpressengine.com/index.php?mid=download&package_id=22753725
다른 위젯들을보니 어떤것들은 비밀댓글을 잘 숨기는 기능이 있는것도 있나보네요!
조금 더 찾아봐야겠습니다.
답변감사드립니다!
content 위젯에서 댓글 목록을 가져오는 부분을 보면
if($args->show_secret != 'Y')
{
$obj->is_secret = 'N';
}
이라는 부분이 있습니다.
위젯 설정의 show_secret 변수값에 따라 댓글 목록 쿼리에 비밀 댓글을 포함시킬 것인지를 확인하는 코드죠.
이 값이 comment 모듈의 getNewestCommentList 함수로 전달되어 목록이 만들어지는데요.
댓글 목록을 수집하는 db 쿼리가 실행될 때 조건들 중에 하나로 들어가게 됩니다.
이렇게 content 위젯에서 댓글 목록을 만들 때 비밀 댓글 노출을 제어하는 방식을 참고하셔서 다른 위젯에서도 관련 조건을 확인해보시면 될 것 같아요.
즉,
등을 확인해보세요.
주신 코드를 잘 적용하여 테스트 해보았는데 빈 게시판입니다로 나옵니다.
파도 댓글 위젯에는 추천 수로 댓글 정렬 기능도 없는것 같고
아무래도 비밀댓글 숨기기 기능이 내장되어있는 컨텐츠 확장위젯을 가공하여 사용해야할것 같습니다.
도움주셔서 감사합니다.
비밀댓글이 최신글 위젯에 노출되는 것이 아니라, 비밀로 쓴 본문글 밑에 일반 댓글을 달았는데, 그 일반 댓글이 최신글 위젯에 노출되는 것일 수도 있습니다. 논리적으로 생각하면, 본문 내용이 비밀이니까 그 댓글도 비밀여야 옳겠지만, 기술적으로는 그렇지 않을수가 있지요.
따라서 댓글 목록을 얻은 후에 (getNewestCommentList() 또는 그와 동일한 query를 한 후), 각 댓글의 본문글의 is_secret 까지 검사해서 필터링 해줘야 원하는 결과를 얻을수 있습니다. (예를들면, content.class.php의 _getCommentItems() 를 참고하시면 됩니다). 아니면, 이걸 getNewestCommentList()에 내장하는 것도 나쁘지 않을 것 같기도 합니다.
예를들면, 이런 것이 추가로 붙어야 하는 것이지요.
$output = $oCommentModel->getNewestCommentList($obj); foreach($output as $key => $oComment) { $oDocument = getModel('document')->getDocument($oComment->get('document_srl'), false, false); if(!$oDocument->isExists() || $oDocument->isSecret() && $args->show_secret != 'Y') { continue; } ... }
그 부분까지는 보지 못했었네요.
역사가 쌓인 만큼 콘텐츠 위젯에 사려깊음이 느껴집니다ㅎㅎ
토비리님의 매의 눈! 👍👍
근데 저렇게 output 만들고 난 다음에 루프 돌려서 비밀글의 댓글을 목록에서 건너뛰게 하면 의도치 않게 한 목록에 list_count 보다 적은 문서가 목록화될 것 같은 킹리적 갓심이 듭니다.
애초에 쿼리 돌릴 때 documents 테이블이랑 join을 해야 하지 않나 싶기도 하구요 🤔
어디에서 어떻게 추출하시는지에 따라 답이 달라지겠지요? 예) xxx 위젯 yyy 스킨