메뉴 건너뛰기

조회 수 0 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

자유게시판 들여다 보면서 스킨을 좀 바꿔봤으면 좋겠는데 하는 생각을 하다가...

급하게 한 번 그누보드 가지고 구현해 봤읍니다.

 

개발을 잘 몰라서 혼자 보면서 실수하지 않으려고

주석을 덕지덕지 붙여가면서 구현해 봤는데,

저같은 초보자들한테는 도움이 될 것 같아서 그대로 올려봅니다.

 

효율적인지는 잘 모르겠네요... ㅎ

 

1) 관리자 > 환경설정 > 기본환경설정 > 여분필드 > 여분필드1 에 멀티스킨을 이용할 게시판 아이디(bo_table)값을 |로 구분하여 입력하세요.

예시: free|notice|gallery

 

2) 아래 구조의 DB 테이블을 추가합니다.

CREATE TABLE `g5_select_bo_skin` (
    `skin_id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    `mb_id` varchar(20) NOT NULL,
    `bo_table` varchar(255) NOT NULL,
    `bo_skin` varchar(255) NOT NULL,
    `bo_mobile_skin` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

자 내가 여기서 어떻게 하는 건지 잘 모르겠다?

첨부파일 다운 받아서 그누보드 설치된 디렉토리에 업로드하고 실행하세요.

common.php 파일 있는 디렉토리에 업로드 하시면 됩니다.

그 다음에 회원님도메인/dbupdate.php 로 한 번 접속하고 끄세요.

 

3) extend 에 아무 이름으로 php 파일을 만들어서 아래 코드를 복붙합니다.

예시: selectskin.extend.php

<?php
// 멀티 스킨을 이용하는 게시판 아이디 배열
$arr_select_bo = explode('|', $config['cf_1']);
 
// 스킨 선택값을 저장
if (isset($_GET['select_bo_skin']) && $_GET['select_bo_skin'])
    $_bo_skin = clean_xss_tags($_GET['select_bo_skin']);
 
// 멀티 스킨을 이용하는 게시판일 때만 동작
if (isset($bo_table) && in_array($bo_table, $arr_select_bo)) {
 
    // PC, 모바일 구분
    $bo_skin_device = 'bo_';
    if ($is_mobile) $bo_skin_device .= 'mobile_';
    $bo_skin_device .= 'skin';
 
    // 스킨을 선택했으면
    if (isset($_bo_skin) && !empty($_bo_skin)) {
 
        // 스킨(디렉토리 기준)이 존재하면 세션을 생성합니다.
        $dirname = get_skin_path('board', $_bo_skin);
        if (is_dir($dirname))
            set_session('ss_select_bo_skin', $_bo_skin);
 
    }
 
    $ss_bo_skin = get_session('ss_select_bo_skin');
 
    // 회원이면
    if ($is_member) {
 
        // 이전에 마지막으로 선택한 스킨 정보가 있는지 조회
        $sql = " SELECT {$bo_skin_device} FROM g5_select_bo_skin WHERE mb_id = '{$member['mb_id']}' and bo_table = '{$bo_table}' ORDER BY skin_id DESC ";
        $result = sql_fetch($sql);
 
        // 세션이 있으면
        if ($ss_bo_skin) {
 
            // 스킨 정보가 존재하고
            if ($result[$bo_skin_device]) {
 
                // 지금 선택한 스킨과 다르면 정보 업데이트
                if ($result[$bo_skin_device] != $ss_bo_skin)
                    sql_query(" UPDATE g5_select_bo_skin SET {$bo_skin_device} = '{$ss_bo_skin}' WHERE mb_id = '{$member['mb_id']}' AND bo_table = '{$bo_table}' ");
 
            // 스킨 정보가 없으면 정보 추가
            } else {
 
                sql_query(" INSERT INTO g5_select_bo_skin SET {$bo_skin_device} = '{$ss_bo_skin}', mb_id = '{$member['mb_id']}', bo_table = '{$bo_table}' ");
 
            }
 
        // 세션이 없으면
        } else {
 
            // 이전에 마지막으로 선택한 스킨이 있으면 적용
            if ($result[$bo_skin_device])
                $ss_bo_skin = $result[$bo_skin_device];
 
        }
 
    }
 
    // 선택한 스킨 적용
    if ($ss_bo_skin) {
        $board_skin_path = get_skin_path('board', $ss_bo_skin);
        $board_skin_url = get_skin_url('board', $ss_bo_skin);
    }
 
}

 

4) 게시판 스킨에 다음 형태의 링크를 추가합니다.

<a href="<?php echo short_url_clean(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&page='.$page.$qstr.'&select_bo_skin=basic'); ?>">목록형</a>
<a href="<?php echo short_url_clean(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&page='.$page.$qstr.'&select_bo_skin=gallery'); ?>">갤러리형</a>

만약 테마에 있는 스킨이면 select_bo_skin=theme/basic 처럼 쓰시면 됩니다.

원하는만큼 추가해서 쓰세요. ㅎㅎ

 

 

추가! 만약 게시판마다 허용된 스킨만 적용 가능하게 하려면 다음과 같이 하세요.

4FLIXNETFLIX님 댓글을 보고 수정해 봤습니다. (근데 이건 테스트는 안 해봤어요. ㅎㅎ)

https://sir.kr/g5_tip/20106#c_20109

 

추가1) 게시판 관리에서 여분필드1에 허용할 스킨을 | 로 구분해서 입력합니다.

예시: basic|gallery

 

추가2) selectskin.extend.php 에서 (혹은 각자 지정한 파일명에서)

<?php
// 멀티 스킨을 이용하는 게시판 아이디 배열
$arr_select_bo = explode('|', $config['cf_1']);

// 스킨 선택값을 저장
if (isset($_GET['select_bo_skin']) && $_GET['select_bo_skin'])
    $_bo_skin = clean_xss_tags($_GET['select_bo_skin']);
 
// 멀티 스킨을 이용하는 게시판일 때만 동작
if (isset($bo_table) && in_array($bo_table, $arr_select_bo)) {

이 부분을 아래처럼 고칩니다.

<?php
// 멀티 스킨을 이용하는 게시판 아이디 배열
$arr_select_bo = explode('|', $config['cf_1']);
 
// 멀티 스킨으로 이용할 수 있는 스킨 배열
$arr_whitelist_skin = explode('|', $board['bo_1']);
 
// 스킨 선택값을 저장
if (isset($_GET['select_bo_skin']) && $_GET['select_bo_skin'])
    $_bo_skin = clean_xss_tags($_GET['select_bo_skin']);
 
// 멀티 스킨을 이용하는 게시판이고 이용허용된 스킨일 때만 동작
if (isset($bo_table) && 

List of Articles
번호 제목 날짜 조회 수
70 다음날 00시에 쿠키 만료되도록 하는 방법 2014.02.27 4411
69 그누보드 확장변수 사용 2016.12.22 2634
68 게시판 스킨 파일 구조 2016.12.22 2343
67 배열을 사용해서 여분필드 한 개로 연락처 입력란 3등분하기 file 2017.04.12 2292
66 여분필드를 활용한 게시판 스킨 제작 - 여분 필드 10개 이상 사용하기 file 2017.04.12 2403
65 게시판 스킨 목록 페이지에 이전 다음 페이지 링크 만들기 2017.04.12 1912
64 게시판 글쓰기 페이지에 다음 API 주소 입력기 사용하기 file 2017.04.12 3729
63 이름이나 연락처 중간 부분을 *** 표시로 숨기기 file 2017.04.12 3063
62 DatePicker 달력 플러그인을 활용한 날짜 입력 쉽게하기 file 2017.04.12 2759
61 DatePicker 달력 플러그인을 활용한 날짜 입력 쉽게하기 file 2017.04.12 4611
60 게시판 글쓰기 페이지에 스마트 에디터 2개 이상 사용하기 2017.04.12 2776
59 여분필드를 활용한 게시판 스킨 제작 - 기초 예제1-3 file 2017.04.13 3276
58 여분필드를 활용한 게시판 스킨 제작 - 기초 예제1-2 file 2017.04.13 4262
57 여분필드를 활용한 게시판 스킨 제작 - 기초 예제1-1 file 2017.04.13 3475
56 여분필드를 활용한 게시판 스킨 제작 - 기본적인 사용 방법 2017.04.13 2892
55 게시판 기본 스킨 내용보기 페이지 살펴보기 2 - 상세 설명 2017.04.13 2528
54 게시판 기본 스킨 글쓰기 페이지 살펴보기 2 - 상세 설명 2017.04.13 2916
53 게시판 기본 스킨 글쓰기 페이지 살펴보기 1 - write.skin.php 2017.04.13 2551
52 게시판 기본 스킨 목록 페이지 살펴보기 2 - 상세 설명 2017.04.13 2321
51 게시판 기본 스킨 목록 페이지 살펴보기 1 - list.skin.php 2017.04.13 2959
Board Pagination Prev 1 2 3 4 Next
/ 4

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved