메뉴 건너뛰기

조회 수 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. 회원가입 약관동의 전체동의 보완

    Date2024.04.09 Views0
    Read More
  2. 회원가입 못하게

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

    Date2019.12.13 Views588
    Read More
  4. 회원 등급(권한)에 따라서 다른 메시지 보이기

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

    Date2024.04.09 Views0
    Read More
  6. 홈페이지를 특정 IP 일때 다른 페이지로 연결하기

    Date2024.04.09 Views0
    Read More
  7. 하나의 게시판에 여러 스킨을 적용해 보자

    Date2024.04.09 Views0
    Read More
  8. 페이지 하단 커스텀 플레이어

    Date2024.04.09 Views0
    Read More
  9. 특정국가 차단하기

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

    Date2019.12.09 Views367
    Read More
  11. 카운트다운 스크립트

    Date2019.12.13 Views317
    Read More
  12. 접속주소가 https로 되여 있는지 판단하여 $g5_path['url']를 수정하기

    Date2024.04.09 Views8
    Read More
  13. 이미지에 워터마크 넣기

    Date2019.12.13 Views389
    Read More
  14. 이름이나 연락처 중간 부분을 *** 표시로 숨기기

    Date2017.04.12 Views3063
    Read More
  15. 이름 마지막 한자리 별표 처리

    Date2019.12.13 Views326
    Read More
  16. 유튜브 반응형 만들기

    Date2024.04.09 Views0
    Read More
  17. 유튜브 동영상 시간체크 후 폼 전송하기

    Date2024.04.09 Views0
    Read More
  18. 웹상에서 PDF 뷰어 소스 (copyright 2021 Mozilla)

    Date2024.04.09 Views1
    Read More
  19. 우측 퀵메뉴

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

    Date2024.04.09 Views0
    Read More
Board Pagination Prev 1 2 3 4 Next
/ 4

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved