2011-10-31 2 views
2

얼마 전 나는 PC 게임을위한 팬 사이트를 만들었으며 더 좋게 설정 될 수 있다고 생각합니다. 기본적으로, 지금 내 모든 페이지는 공통의 머리말과 꼬리말을 공유하며, 페이지 간의 유일한 차이점은 메인 테이블 셀에로드 된 내용입니다.내 웹 사이트 레이아웃 및 콘텐츠 로딩을 구성하는 대체 방법

현재 각 페이지에 index.php 파일이있는 고유 한 디렉토리를 사용하여 '깨끗한'URL을 만들려고합니다. 예를 들어

는 내 '정보'페이지 /about/index.php에 위치하고 있지만 바로 이동하여 액세스 할 수 있습니다에/대한

다음

의 index.php가 '에 대한 내부 모습입니다 '디렉토리 :

<?php include '/home/content/69/7232369/html/loco_header.html' ?> 
<tr><td> 
    <table class="mainpagetable"> 
<tr> 
    <td class="maincontent"> 
     <table class="contenttable" > 
      <tr><td><div class="contenttop"><span class="newheader">About</span></div> 
      <div class="contentmiddle" id="contentmiddle"> 
      <table class="newcontent"> 
      <tr><td> 
      <br> 
      <?php include 'about.html'; ?> 
     </td></tr> 
     </table> 
     </div> 
     <div class="contentbottom"></div></td></tr> 

</table> 

      </td> 
    <td class="gap"> 

    &nbsp;</td> 
<?php include '/home/content/69/7232369/html/site_footer.html' ?> 

그래서 기본적으로 레이아웃을 HTML로 작성하여 테이블 내의 테이블을 사용하여 사이트의 각 부분을 분리했습니다. 헤더, 페이지 내용 및 바닥 글에 PHP가 포함되어 있습니다. 내 페이지는 모두 이렇게 보이지만 처음에는 좋은 접근 방식 인 것처럼 보였습니다. 그러나 최근에 다른 호스트로 전환했는데 모든 것을 복사하면 머리글/바닥 글에 포함 된 내용 중 아무 것도 다른 경로로 인해 작동하지 않았습니다. 루트 디렉토리 :

<?php include '/home/content/69/7232369/html/loco_header.html' ?> 

100+ php 파일을 거치고 머리말/꼬리말을 하나 하나씩 변경하는 것은 고통이었습니다. 그때 나는 아마 내가 뭔가 잘못하고 있음을 깨달았습니다.

그래서 제 질문은 다음과 같습니다

1) $ 루트를 포함처럼 내가 뭔가를 할 수 있도록 웹 사이트의 루트 디렉토리를 반환 PHP에서 함수가 있습니다. "/header.html"?

2) 내 깨끗한 URL을 만드는 방법은 상당히 많은 추가 디렉토리와 파일을 생성합니다. 매끄럽게 실행되고 적은 파일을 생성 할 수있는 다른 권장 접근법이 있습니까 (여전히 검색 엔진 친화적입니까)? 또한 깨끗한 URL을 가지고하는 방법으로 잘 작동합니다

3) 내 페이지의 중심으로 내용을로드하기위한보다 효율적인/더 관리 방법이 있나요 (질문 2)를 참조하십시오? AJAX가 떠오르지 만 URL 변경없이 모든 내용을 내 홈 페이지의 중간에 동적으로로드하는 대신 각 콘텐츠 페이지에 대한 실제 URL 링크가 있어야합니다. 나는 솔직히 이것에 좋은 해결책이 있는지 모른다.

4) 내 레이아웃을 구조화하기 위해 테이블에서 테이블을 사용하는 것이 좋지 않다고 생각합니까? 보시다시피, 나는 테이블 태그 중간에 HTML 코드를 분할하여 3 개의 다른 파일 (헤더, 색인, 꼬리말)에 배치하여 내 사이트를 구성합니다. 이것은 나에게 나쁜 것처럼 보인다. 내 페이지의 구조를 명확히하는 데 도움이 경우

, 여기에 내 사이트의 페이지에 대한 링크입니다 : http://locohq.com/about/

어떤 도움 감사합니다, 감사합니다!

+1

웹 사이트의 프리젠 테이션 부분을 제어하기 위해 테이블을 사용하는 것은 좋지 않은 습관입니다. 프레젠테이션과 자바 스크립트에 HTML을 사용하는 것이 좋습니다 (Ajax, JQuery와 같은 고급 프레임 워크를 사용할 수 있음).)를 입력합니다. – Mike

+0

더 많은 스타일 : [차가운 URI는 변경되지 않습니다.] (http://www.w3.org/Provider/Style/URI.html) - URL에 집중하지 마세요. 대신 사이트의 HTML/CSS 측면을 개선하십시오. – hakre

+0

DIV를 사용하여 테이블을 교체 한 다음 CSS를 사용하여 현재와 같은 방식으로 배치하는 것이 좋습니다. 내 페이지의 중앙에 콘텐츠를로드하는 방법을 모르겠습니다. 이 웹 사이트는 폐기되었지만 좋은 디자인 사례를 더 잘 이해할 수 있도록 다른 웹 사이트를 만들기 전에 연습으로 사용하고 싶습니다. 아마도 내가 locohq.com/page?=about과 같은 것을 할 수 있고, 그 다음 자바 스크립트를 사용하여 동적으로 'about.html'을 콘텐츠 div에로드 할 수 있습니까? – Sandoichi

답변

0

필자는 모든 테이블을 제거하고 요소로 대체하고 CSS를 사용하여 올바르게 구조화했습니다.

내 콘텐츠를로드하기 위해 방금 중앙에 '콘텐츠'컨테이너가있는 기본 색인 페이지를 만들었습니다. ? 내용 = 페이지와 내용이 컨테이너에로드되는 무엇이든의 코드를 main.php에 연결하여

<?php 
     if(isset($_GET["content"])){ 
      $file = $_GET["content"] . ".php"; 
      if (file_exists($file)) 
       include($file); 
      else 
       echo "Cannot find page <b>" . $_GET["content"] . "</b>"; 
     } 
     else 
      echo "No content loaded"; 
?> 

은 기본적으로 내 페이지에 내용을로드 : 그 용기 내에서, 나는 PHP 코드의 간단한 블록을 넣어 .

내가 mod_rewrite를 사용, 추악한 URL 극복하고 나는 그것이 WWW를로드 할 www.example.com/about 같은 URL을 입력 한 경우

RewriteEngine On 
RewriteBase/
RewriteRule ^([a-zA-Z0-9]+)$ pages/main.php?content=$1 

그래서 내 htaccess로이 점을 넣어합니다. example.com/pages/main.php?content=about 다음 파일 /pages/about.php의 코드가 내 콘텐츠 컨테이너에로드됩니다. 사용자가 존재하지 않는 페이지로 이동하려고하면 기본 페이지가로드되고 컨텐츠 컨테이너 안에는 찾고있는 페이지가 존재하지 않는다는 메시지가 표시됩니다.

1

포함 항목은 절대 값이 아닌 상대적 값일 수 있습니다.

<?php include 'site_footer.html'; ?> 

위의 내용이 도움이 될 것입니다.희망

<?php 
     echo '<pre>'; 
     print_r($_SERVER); 
    ?> 

행운을 빕니다 :

<?php 
     $_SERVER['DOCUMENT_ROOT']; 
    ?> 

하지만 당신이 실행하여 함께 작업해야하는 $_SERVER 배열의 모든 것을 볼 수없는 경우 :

+0

머리말과 꼬리말은 내 웹 사이트의 루트 디렉토리에만 있습니다. 나는 그 (것)들에 조금을 변경하고, 그 때 각 전화 번호부에서 인 경우에 100의 다른 폴더에서 그 (것)들을 새롭게하는 것이 아주 지루 할. 이를 달성하는 더 좋은 방법이 있어야하는 것 같습니다. – Sandoichi

+0

@Sandoichi - 이것을 'includes'폴더와 같은 곳에 넣을 수 있습니다.PHP 포함 '/includes/site_footer.html'; ?>'더 나은 설명을 보려면 여기를 참고하십시오 : http://buildinternet.com/2009/12/using-the-php-include-function-to-template-faster/ – motoxer4533

+0

@ motoxer4533 그게 상대 경로예요? 그래서 각 디렉토리에 'includes'폴더를 만들어야합니다. 내 사이트가 지금 설정되는 방식으로 각 페이지에는 고유 한 디렉토리 (/ about,/items,/modes,/equipment,/movies 등)가 있으므로 내 머리글/바닥 글 파일을 각 페이지에 넣고 싶지 않았습니다. 왜냐하면 내가 작은 변화를 만들 때마다 각각을 대체해야하기 때문이다. 이것은 내 전반적인 문제의 일부였습니다. 그래서 루트 디렉토리로 경로를 반환하는 함수를 찾고 싶었습니다. 그러나 아마도 이와 같은 것은 존재하지 않을 것입니다. – Sandoichi

0

나는 당신이 일을 위해 수 있습니다 무엇을 찾고 생각 이것은 당신이 찾고 있던 것입니다 ... 저는 오늘 카페인이 부족한 상태입니다!

P.S 내가 레이아웃에서 콘텐츠를로드하는 가장 효율적인 방법을 찾으려고 할 때이 질문을 발견했습니다. 나중에 찾은 내용으로 업데이트 할 것입니다.

+0

내 사이트에 콘텐츠를 어떻게로드했는지에 대한 답변을 확인하십시오. 그것은 매우 잘 작동하고 구현하기 쉽습니다. – Sandoichi

관련 문제