그누보드5에 배추빌더의 로고플래너를 달았는데 루트에 설치하지 않고 짧은주소 사용 시 딱 한가지 문제가 있습니다.

그누보드5에 배추빌더의 로고플래너를 달았는데 루트에 설치하지 않고 짧은주소 사용 시 딱 한가지 문제가 있습니다.

QA

그누보드5에 배추빌더의 로고플래너를 달았는데 루트에 설치하지 않고 짧은주소 사용 시 딱 한가지 문제가 있습니다.

본문

안녕하세요.
그누보드5 최신 버전에 배추빌더의 플러그인 로고플래너를 달았습니다.

 

plugin 폴더에 기존 배추빌더 plugin에 있던 logo-planner를 넣고,
extend에 기존 배추빌더의 extend에 있던 mw.g5.adapter.extend.php와 mw.logo.planner.extend.php를 넣었더니 정상적으로 작동하네요.
(그누보드를 루트에 설치했을 경우에는 모두 정상 작동합니다.)

 

그런데,
제가 그누보드를 루트에 설치하지 않고 루트/폴더 에 설치했습니다.
이 상태로도 로고플래너가 정상 작동합니다. 

 

단, 이 상태에서 짧은주소를 사용했더니 문제가 발생하네요.
(루트에 설치 시에는 짧은주소 사용해도 문제없습니다.)

 

메인페이지 및 내용관리로 작성한 페이지, 게시판 글쓰기, 게시물 보기에서는
로고플래너로 올린 로고가 정상적으로 보여지는데,

 

딱 한 곳...
모든 게시판의 리스트에서만 로고플래너로 올린 로고가 깨져버립니다.
게시판 리스트에서만 로고의 경로가 루트/폴더가 아닌 루트로만 되어버립니다.

 

아마도 
extend/mw.g5.adapter.extend.php
의 


$g4['path'] = '';
$script_name = substr($_SERVER['SCRIPT_FILENAME'], strpos($_SERVER['SCRIPT_FILENAME'], G5_PATH)); 
$dir = dirname(str_replace(G5_PATH, '', $script_name));
if ($dir == '/' or $dir == '\\')
    $g4['path'] = './';
else
    for ($i=0, $m=substr_count($dir, '/'); $i<$m; ++$i) {
        $g4['path'] .= '../';
    }

이 부분을 수정해 줘야 할듯한데, 제 실력으로는 아무리 해봐도 되지를 않네요.

 

혹시 이 플러그인 그누보드를 루트/폴더에 설치하고 짧은주소 사용하면서도 사용하려면 어디를 손봐야 할까요? 
지금 테스트로 사용 중이라서 루트/폴더에 설치한 거고 나중에 실사용할 때는 루트에 설치할 거라서 실 사용사에는 문제없어 보이지만,

 

그래도 혹시 루트/폴더에 설치해도 사용 가능한 방법이 있다면 알고 싶습니다.
의뢰를 할만한 사안이 아니라면 아시는 분 좀 알려주시면 정말 감사하겠습니다.

 

이 파일 전체 소스는 아래와 같습니다.


<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
if (!defined("G5_PATH")) return;
function get_g4_skin_path($dir, $skin)
{
    global $g4;
    global $config;
    $cf_theme = trim($config['cf_theme']);
    $theme_path = $g4['path'].'/'.G5_THEME_DIR.'/'.$cf_theme;
    if (preg_match('#^theme/(.+)$#', $skin, $match)) { 
        if (G5_IS_MOBILE) {
            $skin_path = $theme_path.'/'.G5_MOBILE_DIR.'/'.G5_SKIN_DIR.'/'.$dir.'/'.$match[1];
            if (!is_dir($skin_path))
                $skin_path = $theme_path.'/'.G5_SKIN_DIR.'/'.$dir.'/'.$match[1];
        }
        else {
            $skin_path = $theme_path.'/'.G5_SKIN_DIR.'/'.$dir.'/'.$match[1];
        }
    }
    else {
        if (G5_IS_MOBILE) {
            $skin_path = $g4['mobile_skin_path'].'/'.$dir.'/'.$skin;
        }
        else {
            $skin_path = $g4['skin_path'].'/'.$dir.'/'.$skin;
        }
    }
    return $skin_path;
}
$g4 = $g5;
$g4['path'] = '';
$script_name = substr($_SERVER['SCRIPT_FILENAME'], strpos($_SERVER['SCRIPT_FILENAME'], G5_PATH)); 
$dir = dirname(str_replace(G5_PATH, '', $script_name));
if ($dir == '/' or $dir == '\\')
    $g4['path'] = './';
else
    for ($i=0, $m=substr_count($dir, '/'); $i<$m; ++$i) {
        $g4['path'] .= '../';
    }
$g4['table_prefix']     = G5_TABLE_PREFIX;
$g4['cookie_domain']    = G5_COOKIE_DOMAIN; 
$g4['path']             = substr($g4['path'], 0, strlen($g4['path'])-1);
$g4['url']              = G5_URL;
$g4['skin_path']        = $g4['path'].'/'.G5_SKIN_DIR;
$g4['mobile_skin_path'] = $g4['path'].'/'.G5_MOBILE_DIR.'/'.G5_SKIN_DIR;
$g4['bbs']              = G5_BBS_DIR;
$g4['bbs_path']         = $g4['path'].'/'.G5_BBS_DIR;
$g4['server_time']      = time();
$g4['time_ymd']         = date("Y-m-d", $g4['server_time']);
$g4['time_his']         = date("H:i:s", $g4['server_time']);
$g4['time_ymdhis']      = date("Y-m-d H:i:s", $g4['server_time']);
$g4['charset']          = "utf-8";
$g4['admin']            = G5_ADMIN_DIR;
$g4['admin_path']       = $g4['path'].'/'.G5_ADMIN_DIR;
$g4['link_count']       = G5_LINK_COUNT;
if (G5_IS_MOBILE) {
    $board_skin_path    = get_g4_skin_path('board', $board['bo_mobile_skin']);
    $member_skin_path   = get_g4_skin_path('member', $config['cf_mobile_member_skin']);
    $new_skin_path      = get_g4_skin_path('new', $config['cf_mobile_new_skin']);
    $search_skin_path   = get_g4_skin_path('search', $config['cf_mobile_search_skin']);
    $connect_skin_path  = get_g4_skin_path('connect', $config['cf_mobile_connect_skin']);
    $faq_skin_path      = get_g4_skin_path('faq', $config['cf_mobile_faq_skin']);
}
else {
    $board_skin_path    = get_g4_skin_path('board', $board['bo_skin']);
    $member_skin_path   = get_g4_skin_path('member', $config['cf_member_skin']);
    $new_skin_path      = get_g4_skin_path('new', $config['cf_new_skin']);
    $search_skin_path   = get_g4_skin_path('search', $config['cf_search_skin']);
    $connect_skin_path  = get_g4_skin_path('connect', $config['cf_connect_skin']);
    $faq_skin_path      = get_g4_skin_path('faq', $config['cf_faq_skin']);
}
$g4['bbs_img_path']     = $board_skin_path."/bbs-img";
define('_G4_ALPHAUPPER_', G5_ALPHAUPPER);
define('_G4_ALPHALOWER_', G5_ALPHALOWER);
define('_G4_ALPHABETIC_', G5_ALPHABETIC);
define('_G4_NUMERIC_', G5_NUMERIC); 
define('_G4_HANGUL_', G5_HANGUL);
define('_G4_SPACE_', G5_SPACE);
define('_G4_SPECIAL_', G5_SPECIAL);

이 질문에 댓글 쓰기 :

답변 2

윈도우에서 라라곤 사용하면 개발황경도 디렉토리안해도 됩니다.  항상 모든 것은 실서버와 같은 환경구축이 에러를 줄입니다.

 

그래서 요즘은 도커를 많이 사용하는 것 같습니다.

친절하신 답변 감사합니다.
제가 집에서 테스트용으로는 윈도우에 라라곤 사용하는데,
이때도 여러개의 샘플 및 테스트를 하느라 폴더를 사용하고 있어서 이런 불편함(?)이 있네요.
웹상에서도 한개의 도메인에 십여개 정도의 샘플을 넣기도 하고요.
혹시라도 소스의 수정으로 가능할까해서 문의드렸었습니다.
도커가 정확히 무엇인지는 모르겠는데, 한번 알아보겠습니다.

윈도우에서 라라곤 사용하면 개발황경도 디렉토리안해도 됩니다.  항상 모든 것은 실서버와 같은 환경구축이 에러를 줄입니다.

 

그래서 요즘은 도커를 많이 사용하는 것 같습니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 112
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT