그누보드5 게시판 상세 보기 스킨(view.skin.php) 구조 및 주요 코드 분석
페이지 정보

본문
그누보드5 게시판 상세 보기 페이지(view.skin.php)의 기본 HTML/PHP 코드 구조와 주요 함수 역할을 이해하여 커스텀 및 오류 해결에 도움을 얻습니다.
게시판 상세 보기(view.skin.php) 필수 전처리 파일 및 역할
그누보드5 기본 스킨의 상세 보기 페이지인 view.skin.php 파일 상단 전처리 영역에서는 이미지 처리와 화면 출력을 위해 다음과 같은 라이브러리와 자바스크립트 파일을 필수적으로 로드합니다.
include_once(G5_LIB_PATH.'/thumbnail.lib.php');: 썸네일 생성을 담당하는 함수들이 포함된 라이브러리 파일로, 게시물에 첨부된 이미지의 썸네일을 생성할 때 반드시 포함되어야 합니다.<script src="<?php echo G5_JS_URL;?>/viewimageresize.js"></script>: 본문에 첨부된 이미지가 화면 크기에 맞춰 자연스럽게 리사이즈되도록 제어하는 자바스크립트 파일입니다.
이 파일들이 누락되거나 정상적으로 로드되지 않을 경우 썸네일 생성 함수 호출 시 오류가 발생하거나 본문 내 이미지 크기 조절 기능이 정상적으로 작동하지 않을 수 있으므로 스킨 상단에 반드시 포함되어야 합니다.
게시물 정보와 버튼 영역 출력 구조
그누보드5 게시판 상세 보기 페이지(view.skin.php)에서 게시물 정보와 상하단 버튼 영역은 PHP 배열 변수와 함수를 통해 출력됩니다.
게시물 정보 영역 변수
작성자, 작성일, 조회수, 댓글수 등 페이지 정보는 $view 배열 변수와 출력 관련 함수를 조합하여 <section id="bo_v_info"> 영역에 표시됩니다.
- 작성자:
<?php echo $view['name']?>(IP 표시 설정이 활성화된 경우<?php if ($is_ip_view) { echo " ($ip)"; }?>코드로 아이피가 함께 출력됨) - 작성일:
<?php echo date("y-m-d H:i", strtotime($view['wr_datetime']))?>형식으로 출력 - 조회수:
<?php echo number_format($view['wr_hit'])?>회 - 댓글수:
<?php echo number_format($view['wr_comment'])?>건 - 글 제목:
<?php echo cut_str(get_text($view['wr_subject']), 70);?>변수와 함수를 사용해 출력
상·하단 버튼 영역과 $link_buttons
상단과 하단에 동일한 버튼(목록, 수정, 삭제, 답변, 글쓰기 등)이 중복 출력되는 구조를 효율적으로 관리하기 위해 출력 버퍼링 함수를 사용합니다.
- 버튼 변수 저장: 상단 버튼 영역에서 PHP 출력 버퍼링 함수인
ob_start();를 호출한 뒤 버튼 HTML 코드를 작성하고,<?php $link_buttons = ob_get_contents(); ob_end_flush();?>를 실행하여 생성된 버튼 HTML 전체를$link_buttons변수에 담아둡니다. - 하단 버튼 출력: 하단 버튼 영역(
<div id="bo_v_bot">)에서는 반복 코드를 작성할 필요 없이<?php echo $link_buttons?>를 호출하여 상단과 동일한 버튼 그룹을 간편하게 출력합니다. - 권한별 버튼 조건문: 각 버튼은 사용자 권한에 따라 출력 여부가 결정되며,
<?php if ($update_href) {?>,<?php if ($delete_href) {?>,<?php if ($search_href) {?>,<?php if ($reply_href) {?>,<?php if ($write_href) {?>등의 조건 체크 문법으로 감싸져 있습니다.
게시판 첨부 이미지 출력 방식 구분
그누보드5 게시판 상세 보기 스킨(view.skin.php) 파일에서 첨부된 이미지를 출력할 때는 원본 이미지 그대로 출력하는 방식과 썸네일 함수를 거쳐 출력하는 방식을 소스 코드의 주석 처리 및 함수 호출 여부로 구분합니다.
1. 썸네일 함수(get_view_thumbnail)를 통한 출력
- 동작 방식: 첨부된 이미지 파일 배열을 순회하며
get_view_thumbnail($view['file'][$i]['view'])함수를 실행하여 썸네일 이미지를 생성하고 출력합니다. - 필수 조건: 썸네일 기능을 사용하려면 파일 상단 전처리 영역에 썸네일 생성 함수가 포함된 라이브러리 파일이 반드시 로드되어 있어야 합니다.
include_once(G5_LIB_PATH.'/thumbnail.lib.php');
2. 원본 이미지 그대로 출력
- 동작 방식: 썸네일 생성 함수 대신 원본 이미지 출력 코드를 활성화하여 첨부된 이미지의 원본 형태 그대로 출력합니다.
- 구현 방법: 반복문 내에서 아래와 같이 주석 위치를 변경하여 썸네일 함수 대신 원본 출력 구문이 실행되도록 조정합니다.
원본 이미지로 출력하고자 할 때는 썸네일 함수 호출 구문 앞단에 주석 처리를 하고 원본 출력 구문의 주석을 해제하는 방식으로 변경할 수 있습니다.//echo $view['file'][$i]['view']; 원본 이미지 그대로 출력 echo get_view_thumbnail($view['file'][$i]['view']); // 썸네일 이미지를 생성해서 출력
로그인 상태 및 비회원 상태에 따른 추천·비추천 버튼 출력 조건
그누보드 게시판 상세 보기 페이지(view.skin.php)에서 추천(good) 및 비추천(nogood) 기능은 로그인 여부와 게시판 설정에 따라 서로 다른 형태로 출력되도록 구현되어 있습니다.
회원 상태일 때
- 회원은 추천 및 비추천을 직접 클릭할 수 있도록 링크가 포함된 버튼 형태로 출력됩니다.
- 추천 버튼은
$good_href변수와good_buttonID를 가진 앵커(<a>) 태그로 구성되며, 내부에number_format($view['wr_good'])를 통해 현재 추천수가 함께 표시됩니다. - 비추천 버튼은
$nogood_href변수와nogood_buttonID를 가진 앵커(<a>) 태그로 구성되며, 내부에number_format($view['wr_nogood'])를 통해 현재 비추천수가 함께 표시됩니다.
비회원 상태 및 설정에 따른 출력 조건
- 그누보드 기본 정책상 비회원은 추천과 비추천을 클릭할 수 없기 때문에 로그인 상태일 때만 버튼 링크가 활성화됩니다.
- 비회원이거나 클릭 기능이 아닐 때는 게시판 설정값과 연동되어 개수만 출력되는 영역이 따로 존재합니다.
- 게시판 설정에서 추천 사용(
bo_use_good)을 선택한 경우:<span>추천 <strong><?php echo number_format($view['wr_good'])?></strong></span>형태로 추천수가 출력됩니다. - 게시판 설정에서 비추천 사용(
bo_use_nogood)을 선택한 경우:<span>비추천 <strong><?php echo number_format($view['wr_nogood'])?></strong></span>형태로 비추천수가 출력됩니다.
그누보드5 상세 보기 페이지(view.skin.php) 수정 및 분석 가이드
게시판 상세 보기 페이지를 수정하거나 기능을 분석할 때, 아래의 상황별 선택 기준과 행동 지침을 참고하십시오. 모든 수정 전에는 반드시 원본 파일을 백업해야 합니다.
상황별 선택 기준
- 이미지 출력 방식 변경: 첨부 이미지를 썸네일로 보여줄지(getviewthumbnail), 원본 그대로 보여줄지 결정합니다. 썸네일 사용 시 상단에
thumbnail.lib.php로드가 필수입니다. - 버튼 영역 관리: 상·하단에 중복되는 버튼 그룹을 수정할 때는
$link_buttons변수에 담긴 출력 버퍼링 구조를 확인하여, 상단에서 수정 후 하단에서 재사용되는지 확인합니다. - 기능별 권한 제어: 추천/비추천 등 회원 전용 기능은 로그인 여부와 게시판 설정(
bo_use_good등)에 따라 출력 분기가 나뉘어 있으므로, 비회원 상태의 표시 로직을 별도로 확인합니다.
다음 행동
- 파일 확인:
/skin/board/스킨명/view.skin.php파일을 열어 상단 전처리 영역의 필수 라이브러리 로드 여부를 확인합니다. - 코드 수정: 분석하려는 기능(이미지, 버튼, 추천 등)의 코드 블록을 찾아 수정합니다. 이때 최신 PHP 버전과의 호환성 및 보안 패치 적용 여부를 실제 소스 코드와 대조하십시오.
- 결과 검증: 수정 후 게시판 상세 페이지에서 레이아웃 깨짐이나 기능 오류가 없는지 확인합니다.
실전 FAQ
Q. 첨부 이미지를 썸네일 대신 원본으로 출력하려면?
- 실행 방법: 이미지 출력 반복문(
for문) 내에서get_view_thumbnail()함수 호출 코드를 주석 처리하고, 원본 이미지 출력 구문($view['file'][$i]['view'])의 주석을 해제하십시오.
Q. 상·하단 버튼이 중복 출력되는 구조는 어떻게 관리하나요?
- 대안: 상단 버튼 영역에서
ob_start();로 버퍼링을 시작하고, 버튼 코드를 작성한 뒤ob_get_contents()로 변수($link_buttons)에 담아 하단에서echo로 출력하는 방식을 사용합니다.
Q. 비회원에게 추천/비추천 버튼이 클릭되지 않는 이유는?
- 예외: 그누보드 정책상 추천/비추천은 회원 전용 기능입니다. 비회원일 때는 링크가 포함된 버튼 대신 게시판 설정에 따라 수치만 표시되는
<span>태그 영역이 출력되도록 분기되어 있습니다.
함께 보면 좋은 글
- 그누보드4 게시판 목록 스킨(list.skin.php) 구조 분석 및 본문 출력 커스터마이징
- 그누보드 게시판 list.skin.php 구조 분석 및 커스터마이징 가이드
- 그누보드 게시판 글쓰기 스킨 write.skin.php 구조와 입력 폼 구성 요소 분석
참고자료
기타 참고자료
- 이전글그누보드 운영자를 위한 무료 폰트 리소스 및 적용 가이드 26.09.24
- 다음글PHP 폼 데이터 전송 및 파일 업로드 처리 기초 26.09.24
댓글목록
등록된 댓글이 없습니다.