테스트 사이트 - 개발 중인 베타 버전입니다

게시글 작성자가 댓글을 고정하게 해보자

· 2년 전 · 2439 · 7

작업버전

5.5.8.2.7

 

추가된 파일 (첨부파일에서 다운로드)

bbs/ajax.commentfix.php

 

수정한 원본파일

bbs/view_comment.php

skin/board/basic/style.css

skin/board/basic/view.comment.skin.php

 

3068322245_1678518579.4648.png

 

유튜브에 보면 영상 업로더가 댓글 고정하는 기능 있죠?

생각나서 얼른 한 번 구현해 봤습니다.

 

댓글 고정 이후 재접속 때 고정처리를 스크립트로 하는 방법인데,

빨리 구현하려고 그렇게 했습니다. ㅎ

 

간단히 말해서 댓글 레코드의 wr_1 에 값이 있으면 고정시키는 방식입니다.

 

하나의 댓글만 고정할 수 있습니다.

여러개 고정하려면 조금 손을 더 봐야겠네요... ㅎ

 

자 그럼 수정을 시작해 볼까요?

 

3717582117_1678171683.3813.jpg

 

bbs/view_comment.php

69라인 쯤에

[code]$list[$i]['is_fix'] = false; // 얘 추가

$list[$i]['is_reply'] = false; // 여기 위에[/code]

98라인 쯤에 추가

[code]    if ($member['mb_id'] === $view['mb_id'] || $is_admin) {
        $list[$i]['is_fix'] = true;
    }[/code]

 

skin/board/basic/style.css

이 부분을

[code].bo_vc_act li a {display:inline-block;padding:10px 15px}

.bo_vc_act li a:hover {color:#3a8afd}[/code]

아래처럼 수정

[code].bo_vc_act li a, .bo_vc_act li button {display:inline-block;margin:0;padding:10px 15px;border:0;background:none}

.bo_vc_act li a:hover, .bo_vc_act li button:hover {color:#3a8afd}

#bo_vc_fix .desc {margin:0 0 -10px;padding:10px 0 0;font-weight:bold}[/code]

 

skin/board/basic/view.comment.skin.php

1) 이 부분 다음에

[code]<section id="bo_vc">

    <h2>댓글목록</h2>[/code]

아래를 추가

[code]    <div id="bo_vc_fix">
        <div class="desc" style="display:none"><i class="fa fa-map-pin"></i> 작성자가 고정한 댓글</div>
        <div class="container"></div>
    </div>[/code]

 

2) 이 부분을

[code]$is_comment_reply_edit = ($list[$i]['is_reply'] || $list[$i]['is_edit'] || $list[$i]['is_del']) ? 1 : 0;[/code]

아래처럼 수정

[code]$is_comment_reply_edit = ($list[$i]['is_fix'] || $list[$i]['is_reply'] || $list[$i]['is_edit'] || $list[$i]['is_del']) ? 1 : 0;[/code]

 

3) 이 부분을

[code]<article id="c_<?php echo $comment_id ?>" <?php if ($cmt_depth) { ?>style="margin-left:<?php echo $cmt_depth ?>px;border-top-color:#e0e0e0"<?php } ?>>[/code]

아래처럼 수정

[code]<article id="c_<?php echo $comment_id ?>" <?php if ($list[$i]['wr_1']) { ?>class="fix"<?php } ?> <?php if ($cmt_depth) { ?>style="margin-left:<?php echo $cmt_depth ?>px;border-top-color:#e0e0e0"<?php } ?>>[/code]

 

4) 이 부분 다음에

[code]            <ul class="bo_vc_act">[/code]

아래를 추가

[code]                <?php if ($list[$i]['is_fix']) { ?><li><button type="button" class="btn_cm_fix" data-wrid="<?php echo $comment_id; ?>">상단고정</button></li><?php } ?>[/code]

 

5) 이 부분을

[code]<script>

jQuery(function($) {            

    //댓글열기

    $(".cmt_btn").click(function(e){

        e.preventDefault();

        $(this).toggleClass("cmt_btn_op");

        $("#bo_vc").toggle();

    });

});

</script>[/code]

아래로 수정

[code]<script>

jQuery(function($) {

    //댓글열기

    $(".cmt_btn").click(function(e){

        e.preventDefault();

        $(this).toggleClass("cmt_btn_op");

        $("#bo_vc").toggle();

    });

 

    $(".btn_cm_fix").click(function(){

 

        if (confirm("이 댓글을 고정하시겠습니까?")) {

 

            var

                $this = $(this),

                co_id = $this.data('wrid'),

                co_parent_id = <?php echo $view['wr_parent']; ?>;

 

            $.ajax({

 

                type: "POST",

                dataType: "json",

                url: "<?php echo G5_BBS_URL; ?>/ajax.commentfix.php",

                data: {

                    bo_table: "<?php echo $bo_table; ?>",

                    comment_id : co_id,

                    comment_parent_id: co_parent_id

                },

                success: function(response) {

 

                    if (response.type === "done") {

 

                        comment_fix($this, 1);

                        $(".bo_vc_act").hide();

 

                    } else if (response.type === "err") {

 

                        alert(response.error);

 

                    }

 

                },

 

                error: function() {

                    return false;

                }

 

            });


 

        } else {

 

            return false;

 

        }

 

    });

 

});

 

$(document).ready(function(){

 

    var

        $fixed_cmt = $("article.fix"),

        fixed_cnt = $fixed_cmt.length;

 

    if (fixed_cnt) {

        comment_fix($fixed_cmt, 0);

    }

 

});

 

function comment_fix(el, find) {

    var

        $el = el,

        $fix_el = $("#bo_vc_fix"),

        $fix_container = $fix_el.find(".container");

 

    if (find)

        var co_clone = $el.closest("article").clone();

    else

        var co_clone = $el.clone();

 

    $fix_container.html("");

    $fix_container.append(co_clone);

    $fix_container.find("article").css("margin-left", 0);

    $fix_container.find(".bo_vl_opt").remove();

    $fix_el.find(".desc").show();

}

</script>[/code]

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 7개

2년 전
오 개발자 되셨네요!
2년 전
지운아빠님인지 이총님인지 헷갈리고 있습니다.ㅋ
2년 전
멋지네요 공개해 주셔서 감사합니다.
2년 전
감사합니다. ^^
2년 전
좋은 팁 감사 합니다.
와 아이디어 좋네요!! 감사합니다. 응용해서 잘 쓰겠습니다.
3개월 전
감사합니다

게시글 목록

번호 제목
21184
21166
21157
21136
21132
21124
21119
21114
21106
21095
21069
21063
21060
21058
21053
21035
21032
21028
21009
21000
20994
20993
20984
20979
20958
20935
20934
20930
20913
20883