메뉴 건너뛰기

조회 수 36 추천 수 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) && 

  1. No Image 09Apr
    by
    2024/04/09 Views 145 

    mov 업로드시 mp4 자동 변환

  2. No Image 09Apr
    by
    2024/04/09 Views 41 

    유튜브 동영상 시간체크 후 폼 전송하기

  3. No Image 09Apr
    by
    2024/04/09 Views 45 

    input에 datepicker 달력 날짜 넣기

  4. NICE API 인증모듈

  5. No Image 09Apr
    by
    2024/04/09 Views 35 

    약간간단 주소복사 버튼

  6. No Image 09Apr
    by
    2024/04/09 Views 40 

    input 에 숫자 입력시 3자리 콤마 자동

  7. No Image 09Apr
    by
    2024/04/09 Views 45 

    특정국가 차단하기

  8. 회원가입 약관동의 전체동의 보완

  9. No Image 09Apr
    by 조쉬
    2024/04/09 Views 36 

    하나의 게시판에 여러 스킨을 적용해 보자

  10. No Image 09Apr
    by
    2024/04/09 Views 51 

    접속주소가 https로 되여 있는지 판단하여 $g5_path['url']를 수정하기

  11. No Image 09Apr
    by
    2024/04/09 Views 58 

    여분필드 확장 후 write_update.skin.php

  12. 외부 유입 검색어 나리야 사용가능 [뿡쁑님 자료]

  13. 비회원은 ? 시간 동안 댓글을 볼 수 없게 해보자!

  14. 웹상에서 PDF 뷰어 소스 (copyright 2021 Mozilla)

  15. No Image 09Apr
    by
    2024/04/09 Views 47 

    admin 비밀번호 생각이 안 날때, 비번 바꾸는 간단한 소스 (SHA256 용)

  16. No Image 09Apr
    by
    2024/04/09 Views 36 

    common.php 를 졸라 쉽게 인클루드 하기

  17. No Image 09Apr
    by
    2024/04/09 Views 50 

    스마트에디터2 글쓰기시 큰이미지를 자동으로 리사이징하기

  18. No Image 09Apr
    by
    2024/04/09 Views 44 

    댓글을 잠글 수 있는 기능을 추가 해보자!!!

  19. No Image 09Apr
    by
    2024/04/09 Views 37 

    안쓰는 DHTML 에디터 이미지와 빈폴더 일괄삭제

  20. "웹에서" 검색 추가하기

Board Pagination Prev 1 2 3 4 Next
/ 4

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved