2012-02-13 10 views
0

회원 캐릭터의 추적을위한 PHP CMS 스타일 앱을 만들고 있는데, 프로젝트가 멋지게 나옵니다.하지만 내비게이션 막대를 코딩하는 더 효율적인 방법이 있는지 궁금합니다.내비게이션 막대, 상대 링크

는 줄이 너무 표준으로 상대 링크가 분명한 이유에 대해 작동하지 않습니다 여러 페이지에 포함되어, 나는이 문제를 해결 받고있다 방법은

if (strstr($_SERVER['SCRIPT_FILENAME'], "admin/char/")) { 
$home = "../../index.php"; 
$logout = "../user/logout.php"; 
} else if (strstr($_SERVER['SCRIPT_FILENAME'], "admin/user/")) { 

내가 한 것입니다 입력 할 수있는 경로의 각 조합과이 솔루션이 잘 작동하지만 붙여 넣기 코드를 복사하고 변경하면 무언가가 누락 될 가능성이 커지고 링크가 많을수록이 기회가 증가합니다.

적은 코드로 동일한 결과를 얻는 더 좋은 방법이 있는지 궁금합니다.

모든 조언을 주시면 감사하겠습니다.

+0

다른 사람이이 작업을 수행하는 다른 방법이 있습니까? –

+0

어느 수준의 페이지인지 알고있는 변수를 유지하므로 상대 링크가 기본으로 돌아 가기 쉽습니다. – hakre

답변

1

상수 (예 : BASE_URL = 'http : // localhost/your_site /')를 정의하는 공통 구성 파일 (모든 스크립트에 포함)을 만들 수 있습니다.

그런 다음 구성 파일에 정의 된 BASE_URL 상수를 사용하여 ABSOLUTE 값이있는 모든 링크를 변경하십시오. 항상 유효한 링크가 될 것입니다

$home = BASE_URL . 'index.php'; 

: 당신이 뭔가를해야합니다 결국

.

배포시 구성 파일을 변경하고 BASE_URL을 새 도메인으로 설정해야합니다 (예 : www.mysite.com).

+0

예 요점은 다른 웹 사이트 관리자가 사용할 수있는 공개 코드이므로 호스트의 실제 URL이 다를 수 있습니다. –

+0

사용자 역할에 따라 다른 메뉴 링크가 있지만 상수로 유지되는 BASE_URL과 아무런 관련이 없습니다. 관리자를위한 메뉴가 다르다면 'SCRIPT_FILENAME'이 아니라 사용자 유형에 따라 다른 블록을 가져야하며 링크는 여전히 동일한'BASE_URL' : BASE_URL.'admin/logout을 시작/사용합니다. php'' –

+0

배포시에 언급 한 내용이 없습니다. 수동 변경을 의미하는 기본 URL을 변경해야합니다.이 주소를 입력해야하는 관리자없이 자동으로 모든 도메인에서 작동하는 무언가가 필요합니다. –

0

이전 질문에 대한 답변이 정확하지 않지만 내 질문에 $ BASE_URL이라는 변수를 사용하게되었습니다. 여기에서 나는 sytax와 같은 것을 사용한다. 이 공간의 공정한 조금을 차지 않는 동안

if (strstr($_SERVER['SCRIPT_FILENAME'], "admin/index.php")) { 
$BASE_URL = substr($_SERVER['SCRIPT_FILENAME'], 0, -15) 
} else if (strstr($_SERVER['SCRIPT_FILENAME'], "index.php")) { 
$BASE_URL = substr($_SERVER['SCRIPT_FILENAME'], 0, -9) 
} 

난 링크가 한 페이지에서 파괴 될 때해야 할 모든 페이지가 훨씬 인 해결하고 대응하는 길이 있음을 추가하고, 여러 경로에 대해이 작업을 반복 한 더 쉽습니다.

나는이 코드를 내 header.php 파일에 포함 시켰으므로 변수가 사이트 전체에서 액세스 가능하도록 만들었습니다.