2012-06-22 2 views
1

"header.php"라는 파일이 있습니다.이 파일에는 내 사이트의 모든 페이지에 포함되어 있으며이 파일에는 css 파일, jquery 플러그인, 등등. 그리고 지금 나는 header.php 파일과 같은 디렉토리에없는 파일들과 함께 작동 할 것이므로 그 링크들에 대해 절대 경로를 사용하고 있습니다. 그러나이 예제에서 볼 수 있듯이, header.php 파일에 많은 링크가 포함되어 있다면 관리하기가 정말 어렵습니다. 그래서 여기에서했던 것처럼 header.php 파일에 절대 경로를 사용하는 다른 방법이 있는지 알고 싶습니다.포함 된 PHP 파일의 절대 경로 사용에 대한 대안

header.php

<? 
$base_url = "http://example.com"; 
?> 
    <html> 
     <head> 
     <title> <? echo($title); ?> </title> 

     <link rel="stylesheet" type="text/css" href="<? echo($base_url); ?>/styles/some_css_file.css" media="all"/> 
     <link rel="stylesheet" type="text/css" href="<? echo($base_url); ?>styles/another_css_file.css" media="all"/> 
     <link rel="stylesheet" type="text/css" href="<? echo($base_url); ?>styles/another_css_file.css" media="all"/> 
     ... 
     ... 
     ... 

     <script type="text/javascript" src="<? echo($base_url); ?>/scripts/jquery-1.7.2.min.js"></script> 
     <script type="text/javascript" src="<? echo($base_url); ?>/scripts/some_jquery_plugin.js"></script> 
     <script type="text/javascript" src="<? echo($base_url); ?>/scripts/another_jquery_plugin.js"></script> 
     ... 
     ... 
     ... 
     </head> 

header.php에게

<? 
    $title = "some page title"; 
    include("header.php"); 
?> 

     <body> 
     PAGE CONTENTS 
     </body> 
    </html> 
+1

나는 즉시 ['short_open_tag'] (http://www.php.net/manual/en/ini.core.php#ini.short-open-tag) 해제 및 전체 사용하여 시작하는 것이 좋습니다 대신 DaveRandom

+0

이 예제에서 여기에 짧은 태그를 추가하여 읽기 쉽도록했습니다. 나는 실제 작업에 짧은 태그를 사용하지 않는다. Thx tho. – nosx

답변

1

사이트의 기반을 정의하는 HTML 기본 태그를 사용을 포함 일부 파일.

<base href="<?php echo $base_url; ?>" /> 
<link rel="style.css" /> 
+0

이 메서드는 제대로 작동하는 것처럼 보입니다.이 메서드를 사용하면주의해야 할 사항이 있습니까? – nosx

+0

내가 알고있는 것은 아닙니다. 나는 이것과 내가 뻔뻔스럽게 내 사이트를 연결하려고하는 기술의 조합을 사용한다 - http://bit.ly/MPls0E. 이 코드와 기반을 사용하면 포함 된 모든 CSS/JS가 정규화되었는지 확인하는 데 정말 유용합니다. – kingcoyote

+0

감사합니다. 약 1 시간 동안 테스트를 해본 결과 부작용이 발견되지 않았으므로이 방법을 사용하면 이전보다 훨씬 깨끗합니다. – nosx

0

귀하의 질문에 대한 직접적인 대답은 아니지만 도움이 될 것입니다.

많은 css 및 JS 파일을 포함하는 경우 Minify를 사용해야합니다. Minify는 많은 css/js 파일을 압축하여 하나의 파일로 압축하므로 사이트 로딩 속도가 크게 빨라집니다.

디렉토리와 그룹을 매우 쉽게 지정할 수 있기 때문에이를 사용하면 경로 문제를 해결하는 데 도움이 될 수 있습니다.

당신은 여기에 대한 정보를 찾을 수 있습니다 Minify

1

절대 경로가 여기에 갈 수있는 방법입니다. 그러나 인쇄 할 링크가 많으면 배열에 경로를 저장하고 배열을 반복하여 단순화 할 수 있습니다.

$base = "http://www.example.com/" 
$links = array("styles/file1.css", "styles/file2.css", ...); 

foreach ($links as $link) { 
    echo '<link rel="stylesheet" href="' . $base . $link . '" type="text/css" media="all" />'; 
} 

부수적으로, 가지고있는 것은 실천이 아닙니다. 브라우저에서 서버로 보내야하는 HTTP 요청의 양이 줄어들어 일부 파일을 결합하고 결합하는 것이 더 좋고 효율적입니다. http://developer.yahoo.com/performance/rules.html#num_http

1

나는 나의 프로젝트 중 하나에서 동일한 의구심을 가졌고 나는 코드를 작성했다. 경로가 "/"로 시작하면 루트 디렉토리를 기반으로 파일을 찾을 수 있습니다.이 경우 도메인을 지정할 필요가 없으므로 유지 보수 작업을 쉽게 처리 할 수 ​​있고 URL을 다시 작성하면 문제를 방지 할 수 있습니다 를 사용하여 (mod_rewrite). 그것이 당신을 도울 수 있기를 바랍니다!

<html> 
    <head> 
    <title> <? echo($title); ?> </title> 

    <link rel="stylesheet" type="text/css" href="/styles/some_css_file.css" media="all"/> 
    <link rel="stylesheet" type="text/css" href="/styles/another_css_file.css" media="all"/> 
    <link rel="stylesheet" type="text/css" href="/styles/another_css_file.css" media="all"/> 

    <script type="text/javascript" src="/scripts/jquery-1.7.2.min.js"></script> 
    <script type="text/javascript" src="/scripts/some_jquery_plugin.js"></script> 
    <script type="text/javascript" src="/scripts/another_jquery_plugin.js"></script> 
    </head> 
</html> 
+0

내 로컬 서버에서이 작업을 시도하면 WAMP가 제대로 작동하지 않는 것 같습니다. 그게 어떻게 NIX 시스템에서 작동할지 모르겠다. – nosx

+0

@nosx, 아마도 로컬 환경의 보안 설정 때문에 발생하지만 경로가 올바른지 확인하십시오. [이 페이지를보십시오] (http://evomaster.com.br/), 소스 코드를주의 깊게 읽으십시오. 나는 당신이 말한대로 정확하게 사용했습니다. 모든 브라우저에서 완벽하게 작동합니다. 이상한 점은 로컬 서버 WAPP (Postgres 데이터베이스 사용)에서 잘 작동한다는 것입니다. –

+0

기본 URL이 도메인의 루트에 없으면 작동하지 않습니다. 예를 들어, 그가 루트로 http : // localhost/site /를 사용하고 있으면 실패합니다. – kingcoyote