BOARD

팁·활용

그누보드 새글 페이지(new.php) 출력 방식 커스터마이징 방법

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 4회 작성일 26-10-19 15:53

본문

그누보드 새글 페이지(new.php) 출력 방식 커스터마이징 방법

그누보드 새글 페이지(new.php)에서 원치 않는 댓글을 제외하거나 특정 게시판·회원 글만 출력하도록 SQL 쿼리를 수정하는 방법을 알아봅니다.

새글 페이지(new.php)에서 댓글 제외하고 원글만 출력하기

그누보드 새글 페이지(new.php) 목록에서 댓글을 전부 제외하고 원글만 출력하려면 /bbs/new.php 파일을 수정해야 합니다.

1. 수정 파일 위치

  • /bbs/new.php

2. 코드 수정 방법

파일 내에서 아래의 조건문 코드를 찾아 빨간색(여기서는 첫 번째 줄)만 남기고 나머지는 전부 주석 처리하거나 삭제합니다.

// if ($view == "w") $sql_common.= " and a.wr_id = a.wr_parent ";
// else if ($view == "c")
// $sql_common.= " and a.wr_id <> a.wr_parent ";
// else
// $view = '';
  • 원글만 출력하려면 위의 코드 대신 if ($view == "w") $sql_common.= " and a.wr_id = a.wr_parent "; 부분만 남기고 나머지를 처리합니다.
  • 반대로 댓글만 출력하고 싶다면 $sql_common.= " and a.wr_id <> a.wr_parent "; 페이지만 남기고 삭제하면 됩니다.

새글 페이지(new.php)에서 특정 게시판 글 제외하기

그누보드 5.x 버전의 전체 최신글(새글) 페이지인 /bbs/new.php에서 전체 검색 기능은 유지하면서 특정 게시판의 글만 출력 목록에서 제외하려면 SQL 쿼리문에 not in 조건을 추가해야 합니다.

1. 수정 파일 위치

  • /bbs/new.php

2. 코드 수정 방법

/bbs/new.php 파일의 기본 쿼리인 $sql_common 변수 선언부 바로 아래에 제외할 게시판 아이디를 콤마로 구분하여 not in 조건문으로 추가합니다.

$sql_common.= " and a.bo_table not in ('aaaa', 'bbbb') ";

코드 내의 'aaaa', 'bbbb' 부분에 최신글 목록에서 제외할 실제 게시판 ID를 입력합니다.

3. 게시판 설정 방식과의 차이

게시판 관리 설정에서 '전체 검색 사용' 체크박스를 해제하면 new.php 목록과 전체 검색 결과 페이지 양쪽에서 모두 제외되지만, 위와 같이 new.php의 SQL 쿼리를 직접 수정하면 전체 검색 기능은 정상적으로 유지하면서 새글(new.php) 목록에서만 특정 게시판의 글을 제외할 수 있습니다.

게시판 설정 '검색 사용' 체크 해제와 new.php SQL 쿼리 수정의 차이

그누보드에서 특정 게시판을 최신글(새글) 목록에서 제외할 때 사용하는 두 가지 방법은 적용 범위와 결과에서 차이가 있습니다.

1. 게시판 관리에서 '검색 사용' 체크 해제

  • 작동 방식: 관리자 페이지의 게시판 설정에서 해당 게시판의 검색 사용 여부를 해제합니다.
  • 결과: 최신글(새글 페이지) 목록에서 제외될 뿐만 아니라, 사이트 전체 검색 결과에서도 해당 게시판의 글이 출력되지 않습니다.

2. bbs/new.php SQL 쿼리 수정 (not in 조건 추가)

  • 작동 방식: /bbs/new.php 파일 내 SQL 쿼리에 not in 조건을 추가하여 특정 게시판 ID를 지정합니다.
  • 결과: 전체 검색 기능은 정상적으로 유지하면서 최신글(new.php) 목록에서만 특정 게시판을 제외할 수 있습니다.

로그인 회원 본인 작성 게시물 출력 설정 방법

그누보드 새글 페이지(new.php)에서 로그인한 회원이 접속했을 때 본인이 작성한 게시물만 출력하려면 /bbs/new.php 파일에서 관련 코드를 추가 및 수정해야 합니다.

수정 위치 및 코드 추가

  1. 수정할 파일 위치: /bbs/new.php
  2. 기본 변수 설정 코드 아래에 회원 아이디를 가져오는 코드를 추가합니다.
$mb_id = isset($_GET['mb_id'])? ($_GET['mb_id']): '';
$mb_id = substr(preg_replace('#[^a-z0-9_]#i', '', $mb_id), 0, 20);

위 코드 밑에 아래의 코드를 추가합니다.

$mb_id = $is_member? $member['mb_id']: '';

조건별 적용 방법

  • 관리자는 전체 출력, 일반 회원만 본인 글 출력:만약 관리자는 전체 게시물을 출력하고 일반 회원에게만 본인 글 제한을 적용하고 싶다면 아래와 같이 수정합니다.
    if (!$is_admin) {
    $mb_id = $is_member? $member['mb_id']: '';
    }
  • 비로그인 상태일 때 전체 출력 방지:위 방법은 비로그인 상태일 때 전체 게시물이 출력되지만, 비로그인 상태일 때 전체 출력을 하고 싶지 않다면 기존의 위아래 코드를 주석 처리하고 중간 줄을 수정합니다.
    // if ($mb_id) {
    $sql_common.= " and a.mb_id = '{$member['mb_id']}' ";
    // }

다음 행동 및 확인

  1. 코드를 수정하기 전 원본 /bbs/new.php 파일을 백업합니다.
  2. 파일을 수정한 뒤 웹브라우저에서 새글 페이지(new.php)에 접속하여 로그인 상태와 비로그인 상태에서 각각 의도한 대로 게시물이 필터링되어 출력되는지 확인합니다.

상황별 판단 및 행동 가이드

내 상황선택 기준다음 행동
새글(new.php)에서 댓글을 제외하고 원글만 출력하고 싶을 때/bbs/new.php 내 조건문 제어if ($view == "w") $sql_common.= " and a.wr_id = a.wr_parent "; 조건만 남기고 나머지는 주석 처리
전체 검색은 유지하며 특정 게시판만 새글 목록에서 제외하고 싶을 때게시판 설정 대신 SQL 쿼리 수정/bbs/new.php의 $sql_common 쿼리 아래에 and a.bo_table not in ('게시판id1', '게시판id2') 추가
로그인 회원 본인 작성 글만 출력하고 싶을 때회원 아이디(mb_id) 조건 분기$mb_id = $is_member? $member['mb_id']: ''; 코드를 추가하여 쿼리에 반영

실전 FAQ

Q. 게시판 설정 '검색 사용' 해제와 쿼리 수정의 차이는 무엇인가요?

  • 차이점: 게시판 설정에서 '전체 검색 사용'을 해제하면 사이트 전체 검색 결과에서도 해당 게시판이 제외됩니다. 반면, new.php의 SQL 쿼리에 not in 조건을 추가하면 전체 검색 기능은 유지하면서 새글 목록에서만 특정 게시판을 제외할 수 있습니다.

Q. 새글 목록에서 게시물이 일정 시간 후 사라집니다.

  • 대안: 그누보드 기본 설정상 새글 목록은 일정 기간 후 삭제됩니다. 관리자 페이지 > 환경설정 > 기본환경설정 > '최근게시물 삭제 기간'을 0으로 설정하면 삭제되지 않고 계속 노출됩니다.

Q. 댓글만 따로 출력할 수 있나요?

  • 방법: /bbs/new.php 파일 내 조건문에서 $sql_common.= " and a.wr_id <> a.wr_parent "; 부분만 남기고 나머지를 주석 처리하면 댓글만 출력할 수 있습니다.

함께 보면 좋은 글

참고자료

기타 참고자료

댓글목록

등록된 댓글이 없습니다.