대댓글 들여쓰기 대신 @이름 으로 변경 및 무한대댓글 > 그누보드5 팁자료실

그누보드5 팁자료실

대댓글 들여쓰기 대신 @이름 으로 변경 및 무한대댓글 정보

대댓글 들여쓰기 대신 @이름 으로 변경 및 무한대댓글

본문

그누보드에서 대댓글을 쓰면 해당 댓글밑에 들여쓰기로 댓글이 입력되어집니다

이 댓글에 대댓글을 달면 또 들여쓰기가 되어지죠

 

이걸 댓글 답변대상의 @이름 으로 바꾸고 들여쓰기를 없애는 방법을 알려드리도록하겠습니다

 

주의! 그누보드 기존 댓글 들여쓰기방식을 완전히 바꾸는거기때문에 기존 댓글구조를 많이 바꿉니다.

테스트 사이트에서 한번 해보시고 이방식이 마음에 든다하시면 그때 밑에 따라하면서 바꿔보세요

대부분 커뮤니티 사이트에서 적용하고있는 방식입니다.

본기능은 @멘션기능이 아닙니다 댓글 답변대상의 이름을 댓글 앞에 출력하는것일뿐입니다.

 

먼저

>> /bbs/view_comment.php

20번째줄

기존 > $sql = " select * from $write_table where wr_parent = '$wr_id' and wr_is_comment = 1 order by wr_comment, wr_comment_reply ";

변경 > $sql = " select * from $write_table where wr_parent = '$wr_id' and wr_is_comment = 1 order by wr_comment, wr_id";

으로 바꿔줍니다

 

90번째줄 

//if (strlen($row['wr_comment_reply']) < 5)

if조건만 주석처리합니다 이 조건은 기존에는 5단계까지 대댓글이 달리면 더이상 답변을 불가능하게 하는 조건입니다

그리고 바로아래에

 

$list[$i]['wr_comment_reply'] = explode("|", $row['wr_comment_reply']);

을 새로 추가해주세요

 

100,101번째줄

기존 > $tmp_comment_reply = substr($row['wr_comment_reply'], 0, strlen($row['wr_comment_reply']) - 1);

기존 > if ($tmp_comment_reply == $list[$i-1]['wr_comment_reply'])

변경 > $tmp_comment_reply = explode("|", $row['wr_comment_reply']);

변경 > if ($tmp_comment_reply[0] == $list[$i-1]['wr_id'])

 

여기는 답변있는 코멘트 수정, 삭제 불가능하게 하는 조건이있는곳입니다

기존 사용하던 방식은 사용을 안하기에 변경된 방식으로 완전히 바꾸어줍니다

변경된 방식은 wr_comment_reply컬럼에 답변대상의 wr_id를 저장하여 해당되는 코멘트는 수정,삭제가 불가능하도록 변경하는것입니다

 

>> /bbs/write_comment_update.php

여긴뭐 간단합니다 99~133번째줄 싹 날려주세요

if (strlen($reply_array['wr_comment_reply']) == 5) ~~~~ $reply_char = chr(ord($row['reply']) + $reply_number);

이부분입니다 여긴 기존에 대댓글 들여쓰기를 위한 조건이 명시되어있는곳입니다 걍 안쓰니깐 싹날려주세요

 

그리고 135번째줄

기존 > $tmp_comment_reply = $reply_array['wr_comment_reply'] . $reply_char;

변경 > $tmp_comment_reply = $reply_array['wr_id'].'|'.$reply_array['wr_name'];

 

여기서 답변달때 답변한곳의 wr_id값과 이름을 저장합니다

 

 

중요!!! 변경된 wr_comment_reply 쓰임이 바뀜에 따라 만약 기존 생성되어있는 게시판이있다면 아래 코드를 관리자페이지(adm/index.php등등)에서 실행시켜주시고 삭제해주세요(1번만 실행)

$sql = " select bo_table from `{$g5['board_table']}` ";

$result = sql_query($sql);

for ($i=0; $row=sql_fetch_array($result); $i++) {

  sql_query("ALTER TABLE `g5_write_{$row['bo_table']}` CHANGE COLUMN `wr_comment_reply` `wr_comment_reply` VARCHAR(255) NOT NULL;");

}

기존 varchar(5)로 되어있던걸 255로 늘리는겁니다

 

>> /adm/sql_write.sql

여기서 8번째줄에 wr_comment_reply의 varchar를 255로 변경해주세요

여기는 새로운 게시판을 생성할때 테이블 구조를 저장해놓은 sql문입니다 새로운 게시판생성시 그대로 따라가야하기때문에..

 

 

이제 출력부분입니다 다왔습니다

코멘트를 사용중인 skin은 모두 변경해주셔야합니다(출력부분이라...ㅠㅠ 모두 변경해주셔야해요)

skin/사용중인스킨/view_comment.skin.php

에서 $cmt_depth를 사용하는곳을 찾아보셔야합니다

 

기존 > $cmt_depth = strlen($list[$i]['wr_comment_reply']) * 50;

변경 > $cmt_depth = ($list[$i]['wr_comment_reply'][1])? true : false;

 

<article> 태그에 style보시면 $cmt_depth이 있습니다 여기서 margin-left:<?php echo $cmt_depth ?>px 를 기존 50이나 원하는 수치로 직접입력해주세요

 

그다음 댓글출력부분이있습니다 <div class="cmt_contents">안에 

<?php if ($cmt_depth) { ?><span class="mention">@<?php echo $list[$i]['wr_comment_reply'][1]; ?></span><?php } ?>

를 추가해주시거나 원하는 부분에 넣어주세요

 

멘션 출력부분이라 저렇게만해주시고 디자인은 원하시는대로 만들어주세요

클래스 mention을 미리잡아뒀는데 바꾸셔도되고 그대로 뭐 사용하셔도되고... 이 팁을 적용하시는분 마음이겠죠? ㅎㅎ

 

전이렇게 썻습니다 그냥 색깔하고 배경색만 ㅎㅎ..

#bo_vc .cmt_contents .mention {color: #3493ff;background-color: #eaf4ff;border-radius: 10px;padding: 0 5px;}

 

모바일스킨에도 바꾸셔야할꺼고.. 사용중인 스킨이있다면 코멘트스킨부분을 모두 바꿔주셔야합니다

구조가 바꼈기때문에... 바꾸시지않으면 대댓글이든 댓글이든 그냥 쭉 나열될꺼에요 ㅎㅎ..

 

그럼 이제 대댓글을 입력하면

해당 댓글 답변 대상이 된사람의 이름이 댓글 앞에 노출이 됩니다.

 

감사합니다 이상한게 있다면 알려주세요.

 

 

 

추천
7

댓글 16개

안녕하세요 너무나도 좋은 게시글 감사합니다
한가지 질문이 있는데 댓글 달수있는 회원레벨을 2(로그인한상태)로 지정하면 로그인 안한 사람들(1레벨)한테는 @멘션 이 닉네임대신 숫자로 표기되더라구요 ㅠ ㅠ
로그인 안한사람도 닉네임으로 보이게 할 수 있을까요?

안녕하세요
문의 주신 현상관련해서 확인해보니 해당현상에 대해 확인이 불가능합니다.
에초에 저장할때 @멘션에 대한 정보를 해당 댓글에 저장하기 때문에 저장이 잘못되었거나하면 회원도 해당현상을 겪을거기때문에 저장에 대한 문제는 아닌것같습니다.
그럼 출력에 대한 문제인데 출력부분에서 뭔가 커스텀이 있지 않은지 확인해보시길바랍니다.
예상하기로는 회원 비회원에 따라서 출력이 다른것 같네요

제일 확실한 것은 멘션댓글을 달고 wr_comment_reply컬럼에 "id|회원닉네임"이 정상적으로 입력되는지 확인하시고 출력부분에서 회원,비회원 분기를 주진않았는지 확인해보시길바랍니다.
음... 분기를 줬다고 해도 출력은 같을텐데... 다른이유에서 뭔가 데이터가 변형되어지지않았는지도 체크해보셔야할것같네요
감사합니다 ㅠ ㅠ 알고보니 쓰고있던 나리야빌더의 문제였습니다
오리지널 테마로 돌아가기엔 너무 많은 길을 걸어와서 적용이 안되어
새로운서버 파서 확인해보니 나리야 빌더 적용시 일어나는 문제인것같습니다
최대한 노력해서 고칠수 있나 알아봐야겠네요!
감사합니다 잘 적용한거같은데
닉네임이 짤리는데 어떤문제인가요?
로그인시 로그아웃시 @A, @B, @3, @2 이렇게 적용되네요 ㅠ
순정 basic 보드 사용시에도 같은 오류입니다

예시
@해피아이 >
컬럼이 제대로 변경이 안되것같습니다
기존 varchar(5)이였던걸 255로 늘려야하거든요
mysql에서 해당 게시판 wr_comment_reply 컬럼 설정을 봐주세요 varchar(5)로 되어있다면 짤리는게 맞습니다 이걸 255로 늘려줘야합니다
기존 생성되어있는 게시판설정을 바꾸는것은 본문에 올려져있으니 한번 코드복사하여 실행해보세요
회원,비회원이 다른것은 /bbs/write_comment_update.php에서 저장방식이 회원,비회원이 다른가보네요..?
이게 조금 예전버전에서 작성되었다보니 지금버전과는 차이가 날수있습니다
비회원일때 저장방식도 본문과 같이 변경해주셔야합니다
댓글쓰기 권한 레벨이 회원(2)었을때 이런현상이 나왔네요 저장방식을 바꾸기엔 제 실력이 너무 하찮아서 그냥 비회원도 댓글달수있게 해놨습니다.ㅋㅋㅋ멋집 팁 공개해주셔서 감사합니다
나리야빌더/나리야용 테마 사용중 입니다. 이미지 처럼

1. 게시글에 대한 댓엔 댓을 달 수 있지만, 그 댓에 쓴 댓에는 댓을 할수 없습니다.
2. 댓에 댓을 달았을때 상대방 아이디가 안뜹니다.

다른분 글에 있듯 나리야라 그런걸까요? 아니면 빌더와 무관하게 확인해볼 부분이 어딘지 알고 싶습니다.
나리야이면.. 제가 그쪽 구조를 몰라 답변드리기가 힘듭니다
지금 보이는것만으로도 기본그누보드와는 상당히 달라보이네요
대댓 달 수록 글이 우측으로 쪼그라들어 우울하던 중 대박 자료를 찾았지만..답을 찾을 수 없는 아쉬운 결과네요 ㅠㅠ 말씀 감사합니다. 사용은 못하지만 자료 또한 너무 훌륭합니다
어쨋든 근본은 그누보드이므로 크게 다르진않을겁니다
조금이나마 유추해보자면..(스크린샷으로만 유추하는것이므로 크게 다를수있습니다)

1. 은 답글출력조건이 있다면 조건살펴보시고 삭제하면될것같습니다
왜냐하면 댓글이든 대댓글이던 어쨋든 모두 답글이 가능하기때문에 답글이 불가능한 상황은 없습니다. 답글이 불가능한 상황은 기존에 말씀하신것처럼 답글을 달면달수록 들여쓰기가 되는데 이게 한계치가 있거든요 이 한계치때문에 있는 조건일겁니다
2. 은 출력시점의 차이인것같은데  div class="cmt_contents"> 제가말한 이부분은 그누보드 기준이고 나리야는 출력부분이 다를것같네요 멘션태그가 정상적으로 들어가있는지 확인해보셔야할것같습니다
전체 12 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT