Extra Form
PHP PHP 7.4
CMS Rhymix 2.x

아마.. 본인의 댓글개수를 count 해서 0보다 클경우라는 if 값으로 해야할 거 같은데..

본인 댓글 count 값을 불러오는 구문을 모르겠습니다..

 

해당 게시글의 총 댓글 개수는 {$document->getCommentCount()} 로 인지하고 있는데 로그인한 사용자 기준 댓글개수가 몇개인지 확인하려면 어떤 구문을 써야할까요?

  • profile
    {@ $count = 0; }
    <!--@foreach($document->getComments() as $key => $comment)-->
    {@ if($logged_info->member_srl === $comment->get('member_srl')) $count++; }
    <!--@end-->

    <!--@if($count > 0)-->
    본인이 댓글달았음
    <!--@end-->
  • profile ?

    답변 감사합니다. 그런데 조금 문제가 발생되었습니다..

     

    31.png.jpg

     

     

    아마 게시글 개수만큼 문구가 불규칙적으로 추기표시가 되는걸로 확인됩니다.

     

    소스를 넣은 경로는 다음과 같습니다.

     

                      <div class="member_{$document->get('member_srl')} tw-inline-flex tw-items-center">{$document->getNickName()}</div>
                    </div>
                  </span>
                            
                  <span cond="$val->type === 'user_id' && $val->idx === -1">{$document->getUserID()}</span>
                  <span cond="$val->type === 'user_name' && $val->idx === -1">{$document->getUserName()}</span>
                  <span title="{zdate($document->get('regdate'), 'Y-m-d H:i:s')}" cond="$val->type === 'regdate' && $val->idx === -1"><span class="tw-mr-1" style="color :#67d2bf; ">등록일</span>&nbsp;{zdate($document->get('regdate'), 'Y-m-d H:i')}</span>
                  <span cond="$val->type === 'last_update' && $val->idx === -1"><span class="tw-mr-1" style="color :#67d2bf; ">최근 업데이트</span>&nbsp;{zdate($document->get('last_update'),'Y.m.d H:i')}</span>
                  <span><!--@foreach($document->getComments() as $key => $comment)-->{@ if($logged_info->member_srl === $comment->get('member_srl')) $count++; }<!--@end--><!--@if($count > 0)-->본인이 댓글달았음<!--@else-->확인 필요<!--@end--></span>

  • ? profile
    소스를 한군데에만 넣엇다면 혹은 재대로 넣었다면 문제는 없어야겟지요. 이러한 버그는 직접 디버깅을 하지 않는 상황에서는 잡기 어렵습니다.
  • ? profile

    표시할 할 항목의 순서를 게시판 설정에 따르도룩 코딩된 목록 스타일의 경우 순번에 따른 위치 출력을 고려해야 할겁니다.

    지금 일부 보여주신 코드는 반복문 안쪽일 겁니다.
    다른 항목을 유심히 보시면 반복해서 출력되지 않고 한번만 출력되도록 한 것이 보일텐데요.

    추거하신 것 span 에 cond="$val->idx === -1" 을 넣어보세요.

     

    잘 안되면 반복문 밖으로 빼는 방법이 있습니다. cond 구문 없이요.

  • profile ?

    동일하게 중복값으로 확인되고 있습니다 ㅠㅠ..

     

    말씀해주신것처럼 반복문 안쪽에 위치해있어서 코드를 내부에삽입을했고.. 유추하셨던 내용처럼 반복문안에서 게시글개수만큼 반복되다보니까 발생되는것 같습니다.. 방법이 있을까요?

     

     

     <span cond="$val->idx === -1"><!--@foreach($document->getComments() as $key => $comment)-->{@ if($logged_info->member_srl === $comment->get('member_srl')) $count++; }<!--@end--><!--@if($count > 0)-->본인이 댓글달았음<!--@else-->확인 필요<!--@end--></span>

  • ? profile

    게시글 갯수 만큼이 아니고 표시 항목 숫자 만큼 일 것입니다.
    해당 순번을 고려해서 위치를 찾아야 하는 방식의 게시판 스킨이니 목록 순서를 조정하는 반복문 밖으로 위치를 빼보세요.

    이 경우는  cond="$val->idx === -1" 는 빼셔야 합니다.

  • profile ?
    <span cond="$val->idx === -1"><!--@if($count > 0)-->회신 완료<!--@else-->확인 필요<!--@end--></span>

    표기 위치 별도로 구문을
    <!--@foreach($document->getComments() as $key => $comment)-->{@ if($logged_info->member_srl === $comment->get('member_srl')) $count++; }<!--@end-->
    <li loop="$document_list=>$no,$document" class="app-active"|cond="$document_srl==$document->document_srl">

    위와 같이 li loop 상단에 적용을 해도 동일하게 중복값들이 표기되고 있습니다..
  • profile ?
    와 감사합니다 제가 위 foreach문때문에 중복노출되는줄 알았는데 말씀해주신대로 block문 외부에 추가할 span값을 넣어보니 중복되지 않습니다 너무 감사합니다.

    @람보 님도 정말 감사합니다.