Gnuboard 5 · Integration Guide

그누보드5 연동,
영상 보면서 5분 만에 끝내기.

템플릿하우스에서 그누보드5를 연결하고, ​
게시판·회원가입 블록을 내 사이트에 바로 적용하는 방법을 단계별로 안내합니다.

youtube.com/watch?v=Tzv2bFxsGJQ HD

    연동 방법 비교 — 어떤 방법이 맞나요?

    템플릿하우스 ↔ 그누보드5,
    클릭 한 번으로 양방향 연동

    템플릿하우스 에디터에서 그누보드5 API를 연결하면, 게시판·회원가입·로그인 같은 동적 페이지를 디자인된 템플릿 위에 그대로 얹을 수 있어요. ​
    코드 한 줄 없이도, 또 코드를 원하는 만큼 깊게 다루는 것도 모두 가능합니다.

    게시판 회원가입 로그인 프로필 갤러리
    템플릿하우스와 그누보드 양방향 연동 일러스트
    SYNC 양방향 데이터 연결 · 템하 ↔ 그누보드5

    3가지 방법 중 골라보세요

    모든 방법의 전제 조건

    어떤 방법이든 에디터 왼쪽 사이드메뉴 데이터 탭에서 그누보드5 API를 먼저 연결해야 합니다. 아직 연결 전이라면 아래 섹션을 먼저 확인하세요.

    그누보드5 API 연결하기

    1 2 3 데이터 연결하기 그누보드5 - 템하호스팅 선택 모달
    SCREEN 데이터 연결하기(그누보드5) 모달 · 템하호스팅 선택 → 데이터 연결

    에디터 "데이터" 메뉴에서 호스팅만 선택하면 끝

    에디터 좌측 사이드메뉴에서 데이터 아이콘을 누르면 데이터 연결하기(그누보드5) 모달이 열립니다. 연결 가능한 템하호스팅을 골라 데이터 연결 버튼만 누르면 그누보드5 데이터가 곧바로 붙습니다.

    템하호스팅 필수

    그누보드5 API 연동은 템하호스팅에서만 가능합니다. ​
    다른 서버를 사용 중이라면 템하호스팅으로 이전 후 진행하세요.

    4단계로 끝나는 API 연결

    1

    에디터 왼쪽 사이드메뉴 → "데이터" 클릭

    에디터 왼쪽 아이콘 메뉴에서 원통 모양 아이콘(데이터)을 클릭합니다. 연결된 API가 없으면 "데이터 연결하기(그누보드5)" 버튼이 보입니다.

    2

    연결할 템하호스팅 선택

    내 템하호스팅 목록이 나타납니다. 호스팅 상태를 확인하세요.
    • 연동가능 — 그누보드5 API가 설치되어 있어 바로 연결 가능
    • 준비필요 — 그누보드5 API 미설치, "그누보드5 API 설치" 버튼 클릭
    • 사용중 — 이미 다른 프로젝트에서 사용 중, 선택 불가

    3

    "준비필요" 상태라면 → API 자동 설치

    "그누보드5 API 설치" 버튼을 클릭하면 최고 관리자 정보 입력 화면이 나타납니다. 관리자 ID, 패스워드, 이름, 이메일을 입력하고 다음을 누르면 해당 호스팅에 자동으로 설치됩니다.

    4

    연동 완료 확인

    데이터 패널에 "✅ 연동 완료"와 연결된 호스팅 도메인이 표시되면 끝입니다. 이제 게시판/최신글/로그인 블록을 사용할 수 있습니다.

    연동 완료 후 확인사항

    데이터 패널에서 그누보드 관리자문서함 관리자 버튼으로 직접 관리자 페이지에 접근할 수 있습니다.

    방법 A — 데이터 페이지 추가로 자동 생성

    페이지 패널

    데이터 페이지 추가

    템플릿 선택

    게시판·갤러리·회원가입

    페이지 디자인

    각 페이지별 선택

    그누보드 연결

    미연결 시 안내

    세트 자동 생성

    완료
    페이지 패널 - 데이터 페이지 추가
    STEP 1 페이지 패널 · + 데이터 페이지 추가
    게시글 상세 디자인 선택
    STEP 2 디자인 선택 · 게시글 상세·목록·쓰기
    페이지 연결 확인
    STEP 3 페이지 연결 확인 · 자동 연결 흐름 검토
    1·2번이 이미 선택되어 있다면

    에디터 데이터 패널에서 API가 이미 연결된 경우, 게시판 ID 선택 화면만 나타납니다. 더 빠르게 완료됩니다.

    1

    페이지 패널 하단 + 데이터 페이지 추가 클릭

    2

    [그누보드5] 템플릿 선택 후 페이지 디자인 고르기

    3

    페이지 연결 확인 후 생성 완료

    방법 B — 데이터 블록 패널로 삽입

    에디터에서 그누보드 데이터 연동이 완료된 상태라면, 블록 패널 → 데이터 블록 탭에서 원하는 블록을 선택해 페이지에 적용할 수 있습니다.

    블록 패널에서 데이터 블록 탭 선택
    STEP 1 블록 패널 열기 · 데이터 블록 탭으로 이동
    원하는 그누보드 블록 선택
    STEP 2 블록 선택 · 목록형·카드형·갤러리형
    페이지에 블록 추가
    STEP 3 페이지에 추가 · 게시판 ID 선택 패널
    GUI 필드 연결
    STEP 4 필드 매핑 · 텍스트·이미지에 필드 연결
    1

    에디터 왼쪽 → 블록 탭 클릭 → 블록 추가하기 → 상단 탭에서 데이터 블록 선택

    2

    원하는 그누보드 블록 선택 ​(게시판 목록형, 카드형, 갤러리형 등) — 미리보기 확인

    3

    블록을 페이지에 추가하면 오른쪽 패널에서 연결할 게시판 ID 선택

    4

    오른쪽 사이드패널 → 게시판 데이터에서 연결할 게시판 ID(free, notice, gallery 등)를 선택하고 필드를 매핑

    GUI 필드 연결

    블록 안의 텍스트·이미지 요소를 클릭하면 오른쪽 패널에 목록 필드 연결 항목이 나타납니다. 원하는 데이터 필드를 선택하면 data-gb-tpl{{item.필드명}}이 자동으로 적용됩니다.

    연결 가능한 필드 목록

    • 제목 — 게시글 제목 (wr_subject)
    • 작성일시 — 작성 날짜 (wr_datetime)
    • 작성자이름 — 작성자명 (wr_name)
    • 내용 — 본문 미리보기 (wr_content)
    • 카테고리 — 게시글 카테고리 (ca_name)
    • 조회수 — 조회 수 (wr_hit)
    • 다운로드 — 파일 다운로드 수 (wr_file)
    • 썸네일 이미지 — 대표 이미지 (getListItemImage)

    방법 C — 블록 코드 에디터에서 직접 작성

    data-gb-url 자동 주의

    에디터에서 그누보드 API가 연결되어 있으면 data-gb-url<body> 태그에 자동으로 추가됩니다. 코드에서 중복 입력할 필요가 없습니다.

    파일명: login.html · 초기화 함수: vue_gnulogin() · 클래스: .login-app

    속성 설명 처리
    data-gb-url 그누보드 서버 주소 자동(API연동시)
    data-gb-signup-link 회원가입 페이지 경로 직접 입력
    data-gb-redirect 로그인 성공 후 이동 경로 직접 입력
    data-gb-find-password-link 비밀번호 찾기 경로 선택
    HTML
    login.html

    signup.html — 회원가입

    초기화 함수: vue_gnulogin() · 클래스: .signup-app · 2단계: v-gb-termsv-gb-signup · 에디터에서는 버튼에 !isEditor && 패턴 사용

    HTML
    signup.html

    list.html — 게시판 목록

    초기화 함수: vue_gnuboard() · 클래스: .gnuboard · data-gb-tpl은 필드명(wr_subject 등)과 함께 사용

    HTML
    list.html

    viewer.html — 상세보기 vue_gnuboard() · .gnuboard

    변수: bs 객체 · URL에 ?wr_id=N 필요 · data-gb-initial-status="read" 필수

    주의

    파일 목록은 bs.files가 아니라 반드시 bs.normal_files를 사용해야 합니다.

    HTML
    viewer.html

    write.html — 글쓰기 / 수정

    에디터: Quill — 글쓰기 id="editor", 수정 id="edit-editor" · 화면 분리 v-gb-write / v-gb-edit

    HTML
    write.html

    profile.html — 프로필 수정

    초기화 함수: vue_gnuprofile() · 클래스: .profile-app · 2단계: v-gb-password-checkv-gb-profile-edit

    HTML
    profile.html

    헤더 블록 — 로그인 전/후 분기

    초기화 함수: vue_gnuboard() · 클래스: .gnuboard

    헤더 블록 수정 후에는 반드시 [공통 적용] 버튼을 클릭해야 전체 페이지에 반영됩니다.
    HTML
    header.html

    변수 / 함수 목록

    탭을 클릭하면 해당 구역의 변수·함수 목록을 볼 수 있습니다.

    게시판

    목록 · 상세보기 · 글쓰기 · 수정 페이지

    초기화: vue_gnuboard() · 클래스: .gnuboard

    list.html — 목록 vue_gnuboard() · .gnuboard

    이름 구분 설명
    br.writes 변수 게시글 목록 배열
    br.total_records 변수 전체 게시글 수
    filter.stx 변수 검색어 (v-model)
    pagination.pages 변수 페이지 번호 배열
    item.wr_id 변수 게시글 ID
    item.wr_subject 변수 제목
    item.wr_content 변수 본문
    item.wr_name 변수 작성자
    item.wr_datetime 변수 작성일시
    item.wr_hit 변수 조회수
    item.ca_name 변수 카테고리명
    canWrite 변수 글쓰기 가능 여부
    search() 함수 검색 실행
    getViewLink(wr_id) 함수 상세보기 URL
    getWriteLink() 함수 글쓰기 URL
    getListItemImage(item) 함수 목록 썸네일 URL
    v-gb-list 디렉티브 목록 영역 루트
    v-gb-list-row 디렉티브 한 페이지 글 수
    v-gb-list-page 디렉티브 페이지네이션 블록 수
    v-gb-list-onload 디렉티브 로드 시 목록 자동 조회
    v-gb-list-btn-first 디렉티브 첫 페이지 이동
    v-gb-list-btn-last 디렉티브 마지막 페이지 이동
    v-gb-list-btn-page 디렉티브 특정 페이지 이동
    v-gb-list-page-active-class 디렉티브 현재 페이지 active 클래스
    data-gb-tpl 속성 필드명 지정 (예: wr_subject, 한글 라벨 ❌)
    data-gb-wr-id 속성 목록 항목 식별 (:data-gb-wr-id="item.wr_id")

    viewer.html — 상세보기 vue_gnuboard() · .gnuboard

    이름 구분 설명
    bs.wr_id 변수 게시글 ID
    bs.wr_subject 변수 제목
    bs.wr_content 변수 본문 (v-html 필수)
    bs.wr_name 변수 작성자
    bs.wr_datetime 변수 작성일시
    bs.wr_hit 변수 조회수
    bs.normal_files 변수 일반 첨부파일 배열 (❌ bs.files 아님)
    bs.images 변수 이미지 첨부 배열
    bs.prev_wr_id 변수 이전 글 ID
    bs.next_wr_id 변수 다음 글 ID
    file.bf_source 변수 첨부 원본 파일명
    file.bf_file 변수 다운로드 URL
    file.bf_filesize 변수 파일 용량(바이트)
    canEdit 변수 회원 수정 가능 여부
    canGuestEdit 변수 비회원 수정 가능 여부
    getListLink() 함수 목록 URL
    getEditLink(wr_id) 함수 수정 URL
    formatFileSize(size) 함수 첨부 용량 표시 문자열
    deleteWrite() 함수 게시글 삭제
    data-gb-initial-status="read" 속성 상세 모드 (필수)

    write.html — 글쓰기 (v-gb-write) vue_gnuboard() · .gnuboard

    이름 구분 설명
    bw.wr_name 변수 비회원 작성자명
    bw.wr_password 변수 비회원 비밀번호
    bw.wr_subject 변수 제목
    bi.bo_upload_count 변수 첨부 슬롯 개수
    isLoggedIn 변수 로그인 여부
    id="editor" 속성 Quill 에디터 DOM (글쓰기)
    handleWriteFileChange(i, $event) 함수 첨부 선택 (❌ 파일 v-model)
    submitWrite() 함수 글 등록
    getListLink() 함수 목록 URL (취소 링크)
    v-gb-write 디렉티브 글쓰기 영역
    data-gb-initial-status="write" 속성 글쓰기/수정 페이지 모드

    write.html — 수정 (v-gb-edit) vue_gnuboard() · .gnuboard

    이름 구분 설명
    be.wr_password 변수 비회원 수정 비밀번호
    be.wr_subject 변수 제목
    bs.normal_files 변수 기존 첨부 목록
    file.bf_no 변수 첨부 파일 번호
    file.bf_source 변수 첨부 원본 파일명
    id="edit-editor" 속성 Quill 에디터 DOM (수정)
    deleteFile(bf_no) 함수 기존 첨부 삭제
    submitEdit() 함수 수정 저장
    v-gb-edit 디렉티브 수정 영역

    로그인 · 회원가입

    로그인 페이지와 회원가입(약관 → 가입) 페이지

    초기화: vue_gnulogin() · 클래스: .login-app / .signup-app

    login.html — 로그인 vue_gnulogin() · .login-app

    이름 구분 설명
    login_form.username 변수 아이디
    login_form.password 변수 비밀번호
    login_form.rememberMe 변수 아이디 저장
    alert.show 변수 알림 표시 여부
    alert.type 변수 알림 스타일 클래스
    alert.message 변수 알림 메시지
    loading 변수 요청 중 상태
    handleLogin() 함수 로그인 실행
    getFindPasswordLink() 함수 비밀번호 찾기 URL
    getSignupLink() 함수 회원가입 URL

    signup.html — 회원가입 vue_gnulogin() · .signup-app

    이름 구분 설명
    agreeAll 변수 약관 전체 동의
    agreements.stipulation 변수 회원가입 약관 동의
    agreements.privacy 변수 개인정보 처리방침 동의
    terms.stipulation 변수 약관 HTML (v-html)
    terms.privacy 변수 개인정보 처리방침 텍스트
    canProceedToSignup 변수 약관 단계 통과 여부
    signup_form.mb_name 변수 이름
    signup_form.mb_id 변수 아이디
    signup_form.mb_password 변수 비밀번호
    signup_form.mb_password_re 변수 비밀번호 확인
    signup_form.mb_nick 변수 닉네임
    signup_form.mb_email 변수 이메일
    isFormValid 변수 가입 폼 유효성
    isEditor 변수 에디터 미리보기 모드
    toggleAllAgree() 함수 전체 동의 토글
    checkDuplicate(field) 함수 아이디·닉네임 중복 확인
    handleSignup() 함수 회원가입 완료
    getLoginLink() 함수 로그인 페이지 URL
    v-gb-terms 디렉티브 약관 동의 단계
    v-gb-signup 디렉티브 가입 정보 입력 단계
    v-gb-btn-signup 디렉티브 가입 단계로 이동
    v-gb-btn-terms 디렉티브 약관 단계로 이동

    헤더 (공통)

    전체 페이지에 공통 적용되는 로그인 전/후 UI

    초기화: vue_gnuboard() · 클래스: .gnuboard · 수정 후 [공통 적용] 필수

    header.html — 헤더(공통) vue_gnuboard() · .gnuboard

    이름 구분 설명
    isLoggedIn 변수 로그인 여부
    user.mb_name 변수 회원 이름
    profileImage 변수 프로필 이미지 URL
    handleLogout() 함수 로그아웃

    프로필

    비밀번호 확인 후 프로필 정보 수정

    초기화: vue_gnuprofile() · 클래스: .profile-app

    profile.html — 프로필 수정 vue_gnuprofile() · .profile-app

    이름 구분 설명
    password_check_form.password 변수 비밀번호 확인 입력
    profile_form.mb_id 변수 아이디 (수정 불가)
    profile_form.mb_name 변수 이름
    profile_form.mb_nick 변수 닉네임
    profile_form.mb_email 변수 이메일
    profile_form.mb_image_path 변수 저장된 프로필 이미지 경로
    original_profile.mb_nick 변수 닉네임 중복 확인 비교용
    profileImage 변수 표시용 프로필 이미지 URL
    imagePreview 변수 선택한 이미지 미리보기 URL
    isFormValid 변수 폼 유효성
    isEditor 변수 에디터 미리보기 모드
    handlePasswordCheck() 함수 비밀번호 확인 후 수정 단계 이동
    handleImageChange() 함수 이미지 파일 선택 처리
    clickImageInput() 함수 숨김 file input 열기
    clickImageDelete() 함수 프로필 이미지 삭제
    checkDuplicate('mb_nick') 함수 닉네임 중복 확인
    handleUpdateProfile() 함수 프로필 저장
    v-gb-password-check 디렉티브 비밀번호 확인 단계
    v-gb-profile-edit 디렉티브 프로필 수정 단계
    v-gb-btn-password-check 디렉티브 비밀번호 확인 단계로 돌아가기

    자주 묻는 질문

    A

    데이터 연동(API)로 GUI 연동하면 자동으로 삽입됩니다. 연동완료(gnu) 상태에서는 직접 추가할 필요가 없습니다.

    A

    연동완료(gnu) 상태일 때만 페이지 패널 하단에 + 데이터 페이지 추가 버튼이 활성화됩니다.

    A

    연동 상태, data-gb-table 값, v-gb-list-onload 설정을 순서대로 점검하세요.

    A

    본문은 반드시 v-html로 출력해야 합니다.

    A

    본문 래퍼에 CSS 리셋 클래스(gb-content-reset)를 적용해 블록 CSS 간섭을 방지하세요.

    A

    login-app의 data-gb-redirect 값을 확인하세요.

    A

    bs.files가 아니라 bs.normal_files를 사용해야 합니다.

    A

    아이디/닉네임 중복 확인 완료 후 isFormValid가 true가 됩니다. 에디터 미리보기에서는 :disabled="!isEditor && !isFormValid" 패턴을 사용하세요.

    A

    data-gb-tpl에는 한글 라벨이 아니라 wr_subject 같은 필드명을 쓰고, {{ item.필드명 }}과 함께 지정하세요. 목록 링크에는 :data-gb-wr-id="item.wr_id"도 추가합니다.