메뉴 건너뛰기

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

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

  2. No Image 05Jan
    by
    2023/01/05 Views 79 

    회원가입 못하게

  3. 회원 목록을 select 로 불러와서 선택시 input 에 집어넣기

  4. No Image 24Mar
    by
    2021/03/24 Views 146 

    회원 등급(권한)에 따라서 다른 메시지 보이기

  5. 회원 가입 페이지에서 랜덤 닉네임 보여주기

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

    홈페이지를 특정 IP 일때 다른 페이지로 연결하기

  7. No Image 09Apr
    by 조쉬
    2024/04/09 Views 0 

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

  8. No Image 09Apr
    by
    2024/04/09 Views 0 

    페이지 하단 커스텀 플레이어

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

    특정국가 차단하기

  10. 특정 게시판에서 이미지 파일만 업로드 허용하기

  11. No Image 13Dec
    by
    2019/12/13 Views 317 

    카운트다운 스크립트

  12. No Image 09Apr
    by
    2024/04/09 Views 8 

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

  13. No Image 13Dec
    by
    2019/12/13 Views 389 

    이미지에 워터마크 넣기

  14. 이름이나 연락처 중간 부분을 *** 표시로 숨기기

  15. No Image 13Dec
    by
    2019/12/13 Views 326 

    이름 마지막 한자리 별표 처리

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

    유튜브 반응형 만들기

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

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

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

  19. No Image 13Dec
    by
    2019/12/13 Views 382 

    우측 퀵메뉴

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

Board Pagination Prev 1 2 3 4 Next
/ 4

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved