테마 사용시 하위폴더는 어떻게 잡나요?
본문
보통은 테마 사용하지 않음 설정해서 사이트 루트에 /about 이라는 디렉터리 만들때 _common.php 경로를 설정해주고 index.php에 내용을 추가해서 도메인주소/about 이라는 방식으로 사용을 했었는데, 테마를 사용할 경우는 하위 경로를 어떤식으로 잡아야 하나요? 같은 방식으로 디렉터리 만들고 _common.php와 index.php를 넣고 G5_THEME_URL 로 접근해보려 하니 안되는군요 -ㅅ-;
답변 3
_common.php
를 넣으실때
_common.php 파일안에서
상대경로로
그누보드 루트까지의 접근으로 인클루드가 되어야합니다.
예를들어
테마 basic 라는것을 사용중일경우
그 하위에 about 을 생성하고
테마하위의 about에서 접근시
실제경로는
/theme/basic/about 이 될겁니다.
about디렉토리 안에서
_common.php 가 생성되면
최상위경로의 common.php파일을 읽어야 정상작동되므로
/theme/basic/about/_common.php 파일에서는
<?php
include_once("../../../common.php");
?>
이렇게 작성이 되어있어야 접근이 용이합니다.
이건 직접 common.php를 호출하는 패턴이구요
실제로 그누보드 테마측에서는
각 디렉토리마다 _common.php파일을 만들어두고
최상위의 G5_PATH 의 _common.php 파일에서만
common.php를 호출하고 나머지는
상위의 _common.php 를 동일하게 바라보게 합니다.
그러면
theme/basic 디렉토리의 _common.php를 보시면
../../common.php 로 만 되어있고
그하위의 디렉토리들은
../_common.php 로 접근하는것을 확인할수 있습니다.
여러가지 방법이 쓰이고, 취향적인 성격도 있습니다.
여러가지 방법 중 하나입니다.
<?php
$path = "";
for ($i = 0; $i <10; $i++) {
if (file_exists($path.'common.php')) break;
if (realpath($path) == '/') break;
$path .= '../';
}
include_once($path.'common.php');
include_once($_SERVER['DOCUMENT_ROOT'] ."/common.php");
기존의 _common.php 이 파일의 인쿠르드 방법대신 위에 소스를 참고해 보세요.