테스트 사이트 - 개발 중인 베타 버전입니다

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

masahide 3년 전 조회 3,129

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

 

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

 

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

 

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

 

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

 

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

 

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

</p>

<p>$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'] .= '../';

    }</p>

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

 

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

 

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

 

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

</p>

<p><?php

if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가</p>

<p>if (!defined("G5_PATH")) return;</p>

<p>function get_g4_skin_path($dir, $skin)

{

    global $g4;

    global $config;</p>

<p>    $cf_theme = trim($config['cf_theme']);

    $theme_path = $g4['path'].'/'.G5_THEME_DIR.'/'.$cf_theme;</p>

<p>    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;

}</p>

<p>$g4 = $g5;</p>

<p>$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'] .= '../';

    }</p>

<p>$g4['table_prefix']     = G5_TABLE_PREFIX;

$g4['cookie_domain']    = G5_COOKIE_DOMAIN; 

$g4['path']             = substr($g4['path'], 0, strlen($g4['path'])-1);</p>

<p>$g4['url']              = G5_URL;</p>

<p>$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;</p>

<p>$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";</p>

<p>$g4['admin']            = G5_ADMIN_DIR;

$g4['admin_path']       = $g4['path'].'/'.G5_ADMIN_DIR;

$g4['link_count']       = G5_LINK_COUNT;</p>

<p>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']);

}</p>

<p>$g4['bbs_img_path']     = $board_skin_path."/bbs-img";</p>

<p>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);</p>

<p>

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

답변 2개

채택된 답변
+20 포인트
3년 전

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

 

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

m
masahide
3년 전
친절하신 답변 감사합니다.
제가 집에서 테스트용으로는 윈도우에 라라곤 사용하는데,
이때도 여러개의 샘플 및 테스트를 하느라 폴더를 사용하고 있어서 이런 불편함(?)이 있네요.
웹상에서도 한개의 도메인에 십여개 정도의 샘플을 넣기도 하고요.
혹시라도 소스의 수정으로 가능할까해서 문의드렸었습니다.
도커가 정확히 무엇인지는 모르겠는데, 한번 알아보겠습니다.
마젠토
3년 전
라라곤의 장점이 폴더를 안쓰게 하는 것입니다. 프로젝트별로 만드시고 깃헙과 잘 연동하면 편하게 개발할 수 있을 것 같습니다

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

3년 전

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

 

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

로그인 후 평가할 수 있습니다

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

답변을 작성하려면 로그인이 필요합니다.

로그인