2011-05-09 6 views
3

보통 머리글/바닥 글/메뉴 및 페이지의 내용이 포함 된 기본 페이지 (index.php)가 있습니다. 내용은 GET/POST 메서드에서 일부 변수를 검사하여 변경됩니다. 각 조건에 대해 요청 된 페이지를로드합니다.어떻게 PHP로 페이지를 구성합니까?

website/ 
website/index.php?explore=forum 
website/index.php?explore=users 
website/index.php?explore=articles 

등등 ... 이제

, 내 웹 사이트는 성장하고, 나는 가장 좋은 방법은 직접 각 섹션에 대한 "인덱스"페이지를 호출하는 것입니다 생각;

일도 좋아 예를 들어 위의 예는 다음과 같이 traslate가됩니다 :

website/ 
website/forum/ 
website/users/ 
website/articles/ 

더보기 좋고 관리하기 편합니다. 문제는, 만약 이렇게하면 각 구역 (머리글/바닥 글/메뉴 포함)에 대한 윤곽을 구현해야한다는 것입니다.

그래서 나는 더 나은 전략이 있는지, 그 편리한 지 모르겠습니다. 모든 제안/의견을 환영합니다! 감사합니다

+0

윤곽이란 무엇입니까? – markus

+0

머리말/꼬리말/메뉴와 같은 내용의 경계 : – kwichz

+0

TinyMVC기구, 그것의 관제사 및 경로를보십시오 http://www.tinymvc.com/documentation/index.php/Documentation:Controllerers – tijagi

답변

1

Symfony와 같은 프레임 워크가없는 직선 PHP 프로젝트에서 우리는 분명히 각 섹션에 대해 서로 다른 디렉토리와 인덱스 파일을 가지고 있습니다.

하지만 일반적으로 사이트의 모든 페이지에 하나의 헤더 포함 파일과 하나의 바닥 글 파일이 있습니다. 따라서 머리말과 꼬리말은 일관성 있고 관리하기 쉽습니다. 당신이 자신의 디렉토리에 해당 파일을 유지하려는 경우

당신은 항상

<?php include('../includes/head.php'); ?> 

같은 라인 머리글과 바닥 글을 포함 할 수 있습니다. 나는 우리가 실제로 우리의 경로를 포함에 우리의 선은 단지

<?php include('head.php'); ?> 
2

당신은 아파치 재 작성을 수행하여 최고의 전략으로 최하단의 결과를 얻을 수 있습니다. 예를 들어,/forum은 www.yoursite.com/index.php?article=forum 등으로 이동하도록 다시 작성할 수 있습니다. http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

+0

그러나 이것은 아무것도 바꿀 수 없습니다 ! O를 표시하는 다른 URL : O – kwichz

+0

요점은 각 예제에 대해 특정 인덱스 페이지를 호출 할 필요가 없다는 것이 었습니다. 많은 CMS 시스템이 단일 색인 페이지를 호출하고 데이터베이스에서 내용을 가져옵니다. 거대한 switch 문과 함께 하나의 파일을 가지고있는 것 같습니다. 이 모든 전략은 당신에게 효과가있는 것으로 귀결됩니다. 오버 헤드와 학습 곡선에 신경 쓰지 않는다면 프레임 워크를 고려하십시오. 당신이 많이 바꾸고 싶지 않다면, 다시 작성하십시오. 물리적으로 코드를 분리하려는 경우 머리글 바닥 글에 include가 포함 된 섹션 당 한 페이지를 사용하여 다시 구조를 고려하십시오. 그것은 모두 개인적인 취향입니다. – bpeterson76

2

체크 아웃 심포니 (PHP) 같은 MVC 프레임 워크를 레일 (루비) 또는 장고 (파이썬) :

여기에 완전한 가이드입니다.

MVC 디자인 패턴에는 일반적으로 모든 로딩을 처리하는 하나의 프런트 컨트롤러가 있습니다. 데이터 소스와 상호 작용하는 모델이 있고 사용자 인터페이스를 정의하는보기가 있습니다. 컨트롤러는 모델을 통해 데이터를로드 한 다음 뷰에 전달합니다.

예에서 각 섹션에는 다른 컨트롤러가 있고 서로 다른 상호 작용 유형 (생성, 목록, 삭제, 수정 중 가장 공통적 인 사항)이 서로 다른 작업을 수행합니다.

+0

성능면에서 Symfony는 ZendFramework 또는 Code Igniter와 비교하여 테리 블 (TERRIBLE)입니다. Symfony 사용자베이스의 대부분은 동유럽과 인도에 있기 때문에 영어가 선택되는 언어라면 포럼에서 재미있게 공부하십시오. 레일스와 장고는 완전히 새로운 언어를 배우는 것을 좋아한다면 괜찮습니다. .. – bpeterson76

2

당신은 단지 하나의 index.php 파일에 그 잘 생긴 URL을 리디렉션 규칙을 재 작성 htaccess로 사용할 수 있습니다 말할 수 있도록 /가 포함되어 있습니다 생각합니다.

유일한 문제

는 일반 사람 ( website/css/, website/images/ 등)에서 ( website/forum/, website/users/ 등) 리디렉션 할 URL을 차별화하는 방법을 마련 할 것이다.

대신 website/[pagename]/를 사용
  1. , 당신은 website/page/[pagename]/을 사용할 수

    몇 가지 옵션이 있습니다. 그런 다음 정규식은 ^/?page/[\w+]/?$과 일치하는 모든 URL을 index.php?explore=[pagename]

  2. 으로 리디렉션 할 수 있습니다. 리다이렉션하려는 모든 페이지를 명시 적으로 나열하면됩니다. 같은 정규식을 사용하십시오 ^/?[forum|users|articles]/?$
  3. 걱정하지 마십시오. 파일 이름이 포함되지 않은 URL 만 리디렉션하는 경우 할 때 CSS 또는 이미지 (예 : 의 파일 이름을 포함하는의 URL)를 참조하려고하면 문제가되지 않습니다.
관련 문제