PHP 레이아웃 Class
개발을 하다보면
보통 해더와 풋터 등을 인클루드해서 사용해야 하는 경우가 많다.
-----------------------
해더
-----------------------
|
레 | 본문
프 |
트 |
|
-----------------------
풋터
-----------------------
(보통 이런식이고 본문 부분만 바뀌고 나머지는 매번 같은 모습인 경우가 대부분이다.)
이럴때 매번 include 를 해줘야 하고 또 만약 head의 title 이라도 매번 바꿔줘야 하면
귀찮기 그지 없다.
수정할때도 짜증나고 그래서 간단하게 해더와 풋터를 붙이는 Class 이다
PHP 5.0 이상 버젼에서 사용해야 한다.
class cs_layout {
public static $body;
public static $ht;
public function echo_ht($ht_skin="basic",$restr='',$str='{{TITLE}}') {
// 기본적으로 해더는 무조건 출력 한다.
if($ht !== 'no') {
// 버퍼링에 의해 사이트가 늦어지면, $aBody에 직접 변수값을 넣어주면 될 것임
ob_start(); // 버퍼링 시작
if( is_file($ht_skin) )
@include($ht_skin);
else
@include(IR.'config/ht_skin/cs_basic.php');
$this->body=ob_get_contents(); // 버퍼링된 내용을 변수로 받음
ob_end_clean(); // 버퍼링비움
if($str !== '') {
$this->body = eregi_replace($str,$restr,$this->body);
}
$this->body = explode('{{BODY}}',$this->body,2);
// 해더 출력이라면 바로 해더를 출력한다.
if($this->ht == 'h' or $this->ht == 'ht') echo $this->body[0];
}
}
function __destruct() {
if($this->ht !== 'no') echo $this->body[1];
}
}
사용방법은
미리 적용할 스킨 파일을 만든다
-----------------------
해더
-----------------------
|
레 | {{BODY}}
프 |
트 |
|
-----------------------
풋터
-----------------------
이렇게 본문이 들어갈 자리에 {{BODY}} 라고 입력해둔다.
그리고 넣어야 할 페이지에서
$layout = new cs_layout;
$layout->ht = 'ht'; // 이건 해더와 풋터를 모두 출력하겠다는 뜻 h 는 해더만 출력 t 는 풋터만 출력
$layout->echo_ht("스킨 파일 경로");
이렇게 세줄 추가하면 자동으로 쫙 붙어서 나온다~
* 이 방법은 버퍼를 사용하여 스킨 파일을 읽은후 {{BODY}} 를 기준으로 반으로 쪼갠후
본문에 붙이는 방법이다~
CSboard 에 현재 적용되어 사용되어 지고 있다.