php관련

PHP 레이아웃 Class

PHPdev 2011. 11. 18. 17:01
반응형

개발을 하다보면
보통 해더와 풋터 등을 인클루드해서 사용해야 하는 경우가 많다.

-----------------------
            해더
-----------------------
        |
  레   |      본문
  프   |
  트   |
        |
-----------------------
            풋터
-----------------------
(보통 이런식이고 본문 부분만 바뀌고 나머지는 매번 같은 모습인 경우가 대부분이다.)

이럴때 매번 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 에 현재 적용되어 사용되어 지고 있다.

반응형