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

본문
그누보드 게시판에서 본문을 읽기 전 댓글을 남기도록 유도하고, 댓글 작성자에게만 본문 내용과 링크, 첨부파일 영역을 노출하는 방법을 안내합니다.
그누보드 댓글 작성자에게만 본문 내용 및 링크·첨부파일 공개하기
그누보드 게시판에서 본문을 읽는 사용자가 해당 글에 댓글을 남겼는지 확인하고, 댓글 작성자(관리자 및 글 작성자 포함)에게만 특정 영역을 노출하려면 게시판 스킨 파일(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">) 내부가 아닌, 태그 구조 바깥쪽 또는 전체 영역에 조건문을 적용하거나 테마 구조에 맞게 태그를 포함하여 감싸야 합니다.
함께 보면 좋은 글
- 그누보드 댓글 내용에 입력된 http 주소 자동 링크 제거 방법
- 그누보드4 최신글 스킨을 활용한 원본 첨부파일 기반 배너 및 갤러리 구현
- 그누보드 첨부파일 다운로드 시 매번 포인트 차감 설정 방법
참고자료
기타 참고자료
- 이전글그누보드 통합 검색에서 게시판 분류명(caname) 검색 및 출력하기 26.10.04
- 다음글그누보드 여분필드를 이용해 특정 게시물만 최신글로 추출하는 방법 26.10.04
댓글목록
등록된 댓글이 없습니다.