2026, 새로운 도약을 시작합니다.

그누보드 영카트 테마를 각각 지정해 보자

자유게시판에 올라온 글을 보고 호기심이 동해서 급하게 구현해 봤습니다.

구현하는 도중 굳이 이렇게 쓸 일이 있을까 싶긴 했지만,

세상에는 불가피하게 어쩔 수 없이 이렇게까지 해야 되는 경우도 있으니...라는 생각으로 구현했습니다.

주의할 사항

1)테마 미리보기, 기본스킨 설정 등까지는 테스트 안 해봤습니다.

특히 기본스킨 설정은 손을 더 보셔야 할 것 같습니다.

2)쇼핑몰 관련된 내용도 포함되어 있으니 결제 오류 등 충분히 테스트를 해보시고

3)그리고나서도 10000번 정도 고민해 보시고

4)됐다 싶을 쯤에 다시 한 번 고민해 보시고 적용하시기 바랍니다.

작업버전

5.5.8.2.7

수정한 원본파일

adm/

- theme.js

- theme.php

- theme_update.php

mobile/shop/

- _common.php

shop/

- _common.php

common.php

3717582117_1678171683.3813.jpg

DB column 추가

[code]ALTER TABLE `g5_config` ADD `cf_shop_theme` VARCHAR(255) NOT NULL AFTER `cf_theme`;[/code]

adm/theme.js

1)

[code]var name = $(this).data("name");[/code] 아래에

[code]var themetype = $(this).data("type");[/code] 추가 (이런 부분이 두 개)

2)

[code]                "theme": theme,
                "set_default_skin": set_default_skin[/code] 을

[code]                "theme": theme,
                "themetype" : themetype,
                "set_default_skin": set_default_skin[/code] 으로 수정

3)

[code]                "theme": theme,
                "type": "reset"[/code] 을

[code]                "theme": theme,
                "themetype" : themetype,
                "type": "reset"[/code] 으로 수정

adm/theme.php

1)

[code]        if($config['cf_theme'] == $theme[$i]) {
            $btn_active = '<span class="theme_sl theme_sl_use">사용중</span><button type="button" class="theme_sl theme_deactive" data-theme="'.$theme[$i].'" '.'data-name="'.$name.'">사용안함</button>';[/code] 을 (46라인쯤)

[code]        if (($config['cf_theme'] == $theme[$i] && $config['cf_shop_theme'] == $theme[$i]) && $config['cf_theme'] == $config['cf_shop_theme']) {
            $btn_active = '<span class="theme_sl theme_sl_use"><i class="fa fa-check"></i><span class="sound_only">사용중</span></span><button type="button" class="theme_sl theme_deactive" data-theme="'.$theme[$i].'" '.'data-name="'.$name.'" data-type="3">모두해제</button>';
        } else if($config['cf_theme'] == $theme[$i]) {
            $btn_active = '<span class="theme_sl theme_sl_use"><i class="fa fa-check"></i><span class="sound_only">사용중</span></span>';
            $btn_active .= '<button type="button" class="theme_sl theme_deactive" data-theme="'.$theme[$i].'" '.'data-name="'.$name.'" data-type="1">커뮤해제</button>';
            $btn_active .= '<button type="button" class="theme_sl theme_active" style="margin-left:4px;" data-theme="'.$theme[$i].'" '.'data-name="'.$name.'" data-type="2" data-set_default_skin="'.$set_default_skin.'">모두적용</button>';
        } else if($config['cf_shop_theme'] == $theme[$i]) {
            $btn_active = '<span class="theme_sl theme_sl_use"><i class="fa fa-check"></i><span class="sound_only">사용중</span></span><button type="button" class="theme_sl theme_deactive" data-theme="'.$theme[$i].'" '.'data-name="'.$name.'" data-type="2">쇼핑해제</button>';
            $btn_active .= '<button type="button" class="theme_sl theme_active" style="margin-left:4px;" data-theme="'.$theme[$i].'" '.'data-name="'.$name.'" data-type="1" data-set_default_skin="'.$set_default_skin.'">모두적용</button>';[/code] 으로 수정

2)

[code]$btn_active = '<button type="button" class="theme_sl theme_active" data-theme="'.$theme[$i].'" '.'data-name="'.$name.'" data-set_default_skin="'.$set_default_skin.'">테마적용</button>';[/code] 을 (55라인쯤)

[code]            $btn_active = '<button type="button" class="theme_sl theme_active" data-theme="'.$theme[$i].'" '.'data-name="'.$name.'" data-type="1" data-set_default_skin="'.$set_default_skin.'">커뮤적용</button>'.PHP_EOL;
            $btn_active .= '<button type="button" class="theme_sl theme_active" style="margin-left:4px;" data-theme="'.$theme[$i].'" '.'data-name="'.$name.'" data-type="2" data-set_default_skin="'.$set_default_skin.'">쇼핑적용</button>';
            $btn_active .= '<button type="button" class="theme_sl theme_active" style="margin-left:4px;" data-theme="'.$theme[$i].'" '.'data-name="'.$name.'" data-type="3" data-set_default_skin="'.$set_default_skin.'">모두적용</button>';[/code] 으로 수정

3)

[code]<button type="button" class="tmli_dt theme_preview" data-theme="<?php echo $theme[$i]; ?>">상세보기</button>[/code] 을

[code]<button type="button" class="tmli_dt theme_preview" data-theme="<?php echo $theme[$i]; ?>">상세</button>[/code] 으로 수정

adm/theme_update.php

1)

[code]$theme_dir = get_theme_dir();[/code] 아래에

[code]

switch($themetype) {
    case 1:
        $sql_theme = " cf_theme = '{$theme}' ";
        $sql_reset_theme = " cf_theme = '' ";
        break;
    case 2:
        $sql_theme = " cf_shop_theme = '{$theme}' ";
        $sql_reset_theme = " cf_shop_theme = '' ";
        break;
    case 3:
        $sql_theme = " cf_theme = '{$theme}', cf_shop_theme = '{$theme}' ";
        $sql_reset_theme = " cf_theme = '', cf_shop_theme = '' ";
        break;

}[/code] 추가

2)

[code]$sql = " update {$g5['config_table']} set cf_theme = '' ";[/code] 을

[code]$sql = " update {$g5['config_table']} set {$sql_reset_theme} ";[/code] 으로 수정

3)

[code]$sql = " update {$g5['config_table']} set cf_theme = '$theme' ";[/code] 을

[code]$sql = " update {$g5['config_table']} set {$sql_theme} ";[/code] 으로 수정

mobile/shop/_common.php

[code]define('_SHOP_', true);[/code] 이 코드를 첫번째 줄로 이동

[code]define('_SHOP_', true);
include_once('../../common.php');[/code] 이렇게 돼야 함

shop/_common.php

[code]define('_SHOP_', true);
define('_SHOP_COMMON_', true); // 모바일 페이지의 직접 접근을 막는 경우에 사용[/code] 이 코드를 첫번째 줄로 이동

[code]define('_SHOP_', true);
define('_SHOP_COMMON_', true); // 모바일 페이지의 직접 접근을 막는 경우에 사용
include_once('../common.php');[/code] 이렇게 돼야 함

common.php

1)

[code]if(defined('_THEME_PREVIEW_') && _THEME_PREVIEW_ === true)
    $config['cf_theme'] = isset($_GET['theme']) ? trim($_GET['theme']) : '';[/code] 을

[code]if(defined('_THEME_PREVIEW_') && _THEME_PREVIEW_ === true) {
    $config['cf_theme'] = isset($_GET['theme']) ? trim($_GET['theme']) : '';
    $config['cf_shop_theme'] = isset($_GET['theme']) ? trim($_GET['theme']) : '';
}[/code] 으로 수정

2)

[code]if(isset($config['cf_theme']) && trim($config['cf_theme'])) {
    $theme_path = G5_PATH.'/'.G5_THEME_DIR.'/'.$config['cf_theme'];[/code] 을

[code]

if((isset($config['cf_theme']) && trim($config['cf_theme'])) && (isset($config['cf_shop_theme']) && trim($config['cf_shop_theme']))) {
    if (defined('_SHOP_')) $config_theme = $config['cf_shop_theme'];
    else $config_theme = $config['cf_theme'];

    $theme_path = G5_PATH.'/'.G5_THEME_DIR.'/'.$config_theme;[/code] 으로 수정

3)

[code]define('G5_THEME_URL', G5_URL.'/'.G5_THEME_DIR.'/'.$config['cf_theme']);[/code] 을

[code]define('G5_THEME_URL', G5_URL.'/'.G5_THEME_DIR.'/'.$config_theme);[/code] 으로 수정

|

댓글 6개

디자이너 아니신가요? 0_0
@쪼각조각 리자님으로부터 디자인 금지령을 1032일째 명받았읍니다. 흑흑흑
와우 엉뚱발랄하십니다
고맙게 활용하겠습니다
진짜 멋있어요
그냥 현재 그누에다가 기능 넣어주셨으면... ㅎㅎㅎㅎ

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

그누보드5 팁자료실

번호 제목 글쓴이 날짜 조회
공지 3년 전 조회 4,598
2741 3일 전 조회 117
2740 5일 전 조회 106
2739 1주 전 조회 210
2738 1주 전 조회 218
2737 1주 전 조회 181
2736 1주 전 조회 280
2735 3주 전 조회 283
2734 3주 전 조회 263
2733 1개월 전 조회 265
2732 1개월 전 조회 301
2731 1개월 전 조회 268
2730 1개월 전 조회 227
2729 1개월 전 조회 357
2728 1개월 전 조회 245
2727 1개월 전 조회 422
2726 1개월 전 조회 256
2725 1개월 전 조회 332
2724 1개월 전 조회 361
2723 1개월 전 조회 267
2722 1개월 전 조회 300
2721 1개월 전 조회 212
2720 2개월 전 조회 304
2719 2개월 전 조회 307
2718 2개월 전 조회 202
2717 2개월 전 조회 337
2716 2개월 전 조회 202
2715 2개월 전 조회 312
2714 2개월 전 조회 273
2713 2개월 전 조회 376
2712 2개월 전 조회 289
🐛 버그신고