BOARD

팁·활용

그누보드 댓글 작성자에게만 본문·링크·첨부파일 공개하기

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 11회 작성일 26-10-04 16:05

본문

그누보드 댓글 작성자에게만 본문·링크·첨부파일 공개하기

그누보드 게시판에서 본문을 읽기 전 댓글을 남기도록 유도하고, 댓글 작성자에게만 본문 내용과 링크, 첨부파일 영역을 노출하는 방법을 안내합니다.

그누보드 댓글 작성자에게만 본문 내용 및 링크·첨부파일 공개하기

그누보드 게시판에서 본문을 읽는 사용자가 해당 글에 댓글을 남겼는지 확인하고, 댓글 작성자(관리자 및 글 작성자 포함)에게만 특정 영역을 노출하려면 게시판 스킨 파일(view.skin.php) 상단을 수정해야 합니다. 수정 전 반드시 view.skin.php 파일을 백업하십시오.

1. 댓글 작성 여부 판별 코드 추가

view.skin.php 파일 상단의 ?> 안쪽에 아래 코드를 추가합니다. 이 코드는 현재 로그인한 회원이 해당 게시글(wr_parent)에 댓글(wr_is_comment = 1)을 작성했는지 DB에서 조회하여 $is_cmt 변수에 참/거짓 값을 저장합니다.

// 댓글을 남겼는지 확인
$cmt_row = sql_fetch(" select count(*) as cnt from {$write_table} where wr_parent = '{$view['wr_id']}' and wr_is_comment = 1 and mb_id = '{$member['mb_id']}' ");
$is_cmt = false;
if ($is_admin || $cmt_row['cnt'] || ($write['mb_id'] == $member['mb_id'])) {
 $is_cmt = true;
}

조건문의 의미는 다음과 같습니다.

  • $is_admin: 관리자 권한인 경우
  • $cmt_row['cnt']: 해당 게시글에 댓글을 작성한 경우
  • $write['mb_id'] == $member['mb_id']: 본인이 작성한 글인 경우

2. 링크 주소 출력 제한하기

링크 주소를 출력하는 부분을 찾아 && $is_cmt 조건을 추가합니다.

  • 변경 전:
    if ($view['link']) {
  • 변경 후:
    if ($view['link'] && $is_cmt) {

3. 첨부파일 다운로드 영역 제한하기

첨부파일 시작 부분의 조건문을 수정하여 댓글 작성자에게만 다운로드 영역이 보이도록 합니다.

  • 변경 전:
    <?php if($cnt) {?>
    <!-- 첨부파일 시작 { -->
  • 변경 후:
    <?php if($cnt && $is_cmt) {?>
    <!-- 첨부파일 시작 { -->

4. 본문 내용 출력 제한하기

본문 내용 출력 부를 조건문으로 감싸고, 댓글을 작성하지 않은 사용자에게는 안내 문구를 출력합니다.

  • 적용 예제:
    <?php if ($is_cmt) {?>
    <?php echo get_view_thumbnail($view['content']);?>
    <?php } else {?>
    댓글을 남겨야 본문 내용을 열람할 수가 있습니다.
    <?php }?>

그누보드 댓글 작성자에게만 본문·링크·첨부파일 공개하기

그누보드 게시판에서 본문을 읽는 사용자가 해당 글에 댓글을 작성했는지 판별하여 링크, 첨부파일, 본문 내용을 조건부로 노출할 수 있습니다. 게시판 스킨 파일인 view.skin.php를 수정하여 구현하며, 수정 전 원본 파일을 백업하십시오.

1. 댓글 작성 여부 확인 코드 추가

view.skin.php 파일 상단의 ?> 안쪽에 아래 코드를 추가합니다. 이 코드는 현재 글($view['wr_id'])에 로그인한 회원이 작성한 댓글(wr_is_comment = 1 및 mb_id)이 있는지 조회하고, $is_cmt 변수에 판별 값을 담습니다.

// 댓글을 남겼는지 확인
$cmt_row = sql_fetch(" select count(*) as cnt from {$write_table} where wr_parent = '{$view['wr_id']}' and wr_is_comment = 1 and mb_id = '{$member['mb_id']}' ");
$is_cmt = false;
if ($is_admin || $cmt_row['cnt'] || ($write['mb_id'] == $member['mb_id'])) {
 $is_cmt = true;
}
관리자 및 글 작성자 예외 처리 안내

조건문 내에 $is_admin(관리자이거나), ($write['mb_id'] == $member['mb_id'])(본인이 작성한 글이라면) 조건이 함께 포함되어 있습니다. 따라서 관리자와 게시글 작성자 본인은 댓글을 작성하지 않아도 $is_cmt가 true로 처리되어 콘텐츠를 정상적으로 열람할 수 있습니다.

2. 출력 영역 조건문 적용

위에서 설정한 $is_cmt 변수를 활용해 원하는 영역을 if ($is_cmt) {... } 조건문으로 감쌉니다.

  • 링크 주소 출력 제한 (활용 예제 1)기존 링크 출력 조건문 if ($view['link']) {를 아래와 같이 변경합니다.
    if ($view['link'] && $is_cmt) {
  • 첨부파일 영역 출력 제한 (활용 예제 2)첨부파일 시작 부분의 조건문을 아래와 같이 수정합니다.
    <?php if($cnt && $is_cmt) {?>
  • 본문 내용 출력 제한 및 안내 문구 추가 (활용 예제 3)본문 출력 코드를 감싸서 댓글이 없을 때 안내 문구를 출력하도록 변경합니다.
    <?php if ($is_cmt) {?>
    <?php echo get_view_thumbnail($view['content']);?>
    <?php } else {?>
    댓글을 남겨야 본문 내용을 열람할 수가 있습니다.
    <?php }?>

그누보드 댓글 작성 여부에 따른 본문·링크·첨부파일 공개 설정 방법

그누보드 게시판에서 본문을 읽는 회원이 해당 게시글에 댓글을 작성했는지 체크하여, 댓글을 남긴 회원에게만 특정 영역(링크, 첨부파일, 본문 내용 등)을 공개하도록 설정할 수 있습니다. 수정 전 반드시 view.skin.php 파일을 백업하십시오.

1. 댓글 작성 여부 확인 코드 추가

수정할 파일인 view.skin.php 파일 상단의 ?> 안쪽에 아래 코드를 추가합니다.

// 댓글을 남겼는지 확인
$cmt_row = sql_fetch(" select count(*) as cnt from {$write_table} where wr_parent = '{$view['wr_id']}' and wr_is_comment = 1 and mb_id = '{$member['mb_id']}' ");
$is_cmt = false;
if ($is_admin || $cmt_row['cnt'] || ($write['mb_id'] == $member['mb_id'])) {
 $is_cmt = true;
}

조건문의 의미는 다음과 같습니다.

  • $is_admin: 관리자이거나
  • $cmt_row['cnt']: 해당 게시글에 댓글을 작성한 회원이거나
  • $write['mb_id'] == $member['mb_id']: 본인이 작성한 글인 경우에 $is_cmt 변수가 true로 설정됩니다.

2. 출력 영역을 조건문으로 감싸기

확인하고자 하는 영역을 if ($is_cmt) {... } 조건문으로 감싸서 제어합니다.

  • 링크 주소 출력 제한 예제view.skin.php 파일 내에서 링크 출력 부분을 아래와 같이 변경합니다.
    if ($view['link'] && $is_cmt) {
  • 첨부파일 출력 제한 예제첨부파일 시작 부분의 조건문을 아래와 같이 수정합니다.
    <?php if($cnt && $is_cmt) {?>
  • 본문 내용 출력 제한 예제본문 출력부인 <?php echo get_view_thumbnail($view['content']);?> 전후를 조건문으로 감싸 댓글을 유도합니다.
    <?php if ($is_cmt) {?>
    <?php echo get_view_thumbnail($view['content']);?>
    <?php } else {?>
    댓글을 남겨야 본문 내용을 열람할 수가 있습니다.
    <?php }?>

참고 사항

  • 이윰빌더 같은 확장 테마를 사용할 때 게시판 스킨의 HTML 구조(예: <div class="board-view-con view-content"> 등)가 기본 스킨과 다를 수 있습니다. 이 경우 기존에 본문이나 동영상을 감싸고 있는 테마 고유의 태그 구조 내부 또는 바깥쪽에 위 조건문(if ($is_cmt))을 적용하여 레이아웃 깨짐을 방지해야 합니다.

그누보드 댓글 작성자 콘텐츠 공개 설정 가이드

  • 내 상황: 특정 게시글에 댓글을 남긴 회원에게만 본문 내용, 링크, 첨부파일을 공개하고 싶을 때
  • 선택 기준: view.skin.php 파일 상단에 wr_parent와 mb_id를 기준으로 댓글 작성 여부를 판별하는 DB 쿼리 및 $is_cmt 변수 추가
  • 다음 행동: 링크, 첨부파일, 본문 출력 영역을 if ($is_cmt) 조건문으로 각각 감싸서 제어

실전 FAQ

Q. 관리자나 글 작성자 본인도 댓글을 남겨야 내용을 볼 수 있나요?

  • 답변: 아니오. 기본 제공되는 조건문(if ($is_admin || $cmt_row['cnt'] || ($write['mb_id'] == $member['mb_id'])))에 따라 관리자($is_admin)이거나 글 작성자 본인($write['mb_id'] == $member['mb_id'])인 경우 댓글을 작성하지 않아도 콘텐츠가 자동으로 노출됩니다.

Q. 이윰빌더 등 커스텀 테마를 사용할 때 본문 출력을 감쌌더니 모바일 레이아웃이 깨집니다.

  • 답변: 테마 고유의 본문 래퍼 클래스(예: <div class="board-view-con view-content">) 내부가 아닌, 태그 구조 바깥쪽 또는 전체 영역에 조건문을 적용하거나 테마 구조에 맞게 태그를 포함하여 감싸야 합니다.

함께 보면 좋은 글

참고자료

기타 참고자료

댓글목록

등록된 댓글이 없습니다.