css, js 파일의 수정 시간을 verison 에 적용하기 > 그누보드5 팁자료실

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!

그누보드5 팁자료실

css, js 파일의 수정 시간을 verison 에 적용하기 정보

css, js 파일의 수정 시간을 verison 에 적용하기

본문

그누보드에서 스킨이나 웹사이트의 디자인을 css로 변경하는 경우,

add_stylesheet 로 임베드되는 파일의 버전이 자동으로 붙도록 구성되어 있는데요.

이 버전 관리는 /extend/version.extend.php 에서 하게 되어 있더라고요.

 

저는 css 수정이 꽤 잦은 편이라… 

파일의 수정시간을 version 으로 적용하는 다른 팁들을 참고하여 적용하고 있었습니다.

그런데, add_stylesheet 나 add_javascript 로 파일을 임베드 할 때, 코드가 좀 복잡해지는 것 같아서요.

조금 바꿔서 적용을 해봤습니다.

 

 

1. /extend/version.extend.php 하단에 아래의 코드 추가

다음의 코드(숫자는 다를 수 있습니다.) 하단에 그 아래의 코드를 추가합니다.

 


function add_css($file,$n) {
    if (strpos($file, G5_PATH) !== false) {
        $file_location = str_replace(G5_PATH, '', $file);
    } else if(strpos($file, G5_URL) !== false) {
        $file_location = str_replace(G5_URL, '', $file);
    }
    $file_real_location = G5_PATH.'/'.$file_location;
    if (file_exists($file_real_location)) {
        $file_ver = "?ver=".date( 'YmdHis', filemtime( $file_real_location) );
    }
    $css = '<link rel="stylesheet" href="'.$file_location.$file_ver.'">';
    add_stylesheet($css, $n);
}


function add_js($file,$n) {
    if (strpos($file, G5_PATH) !== false) {
        $file_location = str_replace(G5_PATH, '', $file);
    } else if(strpos($file, G5_URL) !== false) {
        $file_location = str_replace(G5_URL, '', $file);
    }
    $file_real_location = G5_PATH.'/'.$file_location;
    if (file_exists($file_real_location)) {
        $file_ver = "?ver=".date( 'YmdHis', filemtime( $file_real_location) );
    }
    $js = '<script src="'.$file_location.$file_ver.'"></script>';
    add_javascript($js, $n);
}

 

 

2. 그리고 css 또는 js 에서 적용해야 하는 코드를 변경해줍니다.

예를 들어,
add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css?ver='.G5_CSS_VER.'">', 10);
같은 코드를,

add_css("$member_skin_url/style.css",0);

로 변경해주면 됩니다.

 

js는

add_js(G5_THEME_PATH.'/js/common.js',11);

같은 형태로 변경해주면 됩니다.

 

 

 

이렇게 적용하면, 

<link rel="stylesheet" href="http://{도메인}/theme/{skin url}/skin.css?ver=220608">

로 출력되던 코드가

<link rel="stylesheet" href="http://{도메인}/theme/{skin url}/skin.css?ver=20220609153302">

로 변경됩니다.

 

/extend/version.extend.php 파일의 버전을 바꿀 필요도 없고,

파일을 수정하게 되면 그 수정한 시간을 기반으로 version 을 붙여서 출력해주니, 브라우저 캐쉬를 비울 필요 없이 바꾼 css 나 js 가 적용된 화면을 볼 수 있습니다.

다만 이 코드는 cafe24 호스팅에서만 확인했고요. 만약 도메인과 연결되는 기본 디렉토리 (카페24의 경우 {아이디}/www)가 아닌 다른 곳에 그누보드를 설치하셨다면 소스 수정을 하셔야 합니다.

추천
4

댓글 2개

  1. 변수 초기화: 코드에서 $file_ver 변수는 조건문 내에서만 선언되고 있습니다. 만약 file_exists($file_real_location) 조건이 거짓이라면, $file_ver 변수는 정의되지 않은 채로 사용될 것입니다. 이는 PHP 에러 또는 경고를 발생시킬 수 있습니다. 따라서 $file_ver 변수를 빈 문자열로 초기화하는 것이 좋습니다.

  2. 조건문의 중복: strpos() 함수를 사용한 조건문이 중복되어 있습니다. 이 부분은 함수의 시작 부분에서 한 번만 확인하도록 개선할 수 있습니다.

  3. 코드 재사용성: add_css() 함수와 add_js() 함수에 중복된 로직이 많습니다. 중복된 로직을 별도의 함수로 분리하여 코드의 재사용성을 높일 수 있습니다.

개선된 코드 :

 

function get_file_version($file) {
    $file_location = '';
    $file_prefix = strpos($file, G5_PATH) !== false ? G5_PATH : (strpos($file, G5_URL) !== false ? G5_URL : null);
    
    if ($file_prefix) {
        $file_location = str_replace($file_prefix, '', $file);
        $file_real_location = G5_PATH.'/'.$file_location;
        if (file_exists($file_real_location)) {
            return $file_location . "?ver=" . date('YmdHis', filemtime($file_real_location));
        }
    }
    
    return $file_location;
}

function add_css($file, $n) {
    $file_with_ver = get_file_version($file);
    $css = '<link rel="stylesheet" href="'.$file_with_ver.'">';
    add_stylesheet($css, $n);
}

function add_js($file, $n) {
    $file_with_ver = get_file_version($file);
    $js = '<script src="'.$file_with_ver.'"></script>';
    add_javascript($js, $n);
}
 

사용법은 같습니다

전체 2,431 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

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