phpsource/템플릿2002. 1. 28. 12:47
written: Jan 28 2002
last modified: Sep 20 2006
간단한 구조의 웹문서에서는 템플릿을 사용할 필요가 거의 없을 것입니다. 이러한 경우는 보통 우리가 많이 사용하는 방법인 HTML 문서 내에 PHP 코드를 삽입하여 작성하게 되면 훨씬 빠르고 손쉽게 문서를 작성할 수 있을 것입니다.
문제는 웹사이트의 내용이 점점 다양해지고 규모가 커지게 되면 PHP 코드 삽입 방식으로는 개발 속도와 문서 관리에 있어 금방 한계에 부딪치게 된다는 것입니다. 결국 현재 PHP의 기술 수준으로 볼 때 템플릿툴을 이용하지 않고 복잡한 웹사이트를 개발한다는 것은 거의 시간 낭비가 될 것입니다. (물론 PHP 언어를 위해 작성된 그래픽 웹에디터도 있는 것 같으니 관심있으면 한번 찾아보시길 바랍니다.)
PHP 코드와 HTML의 분리
템플릿툴을 이용하면 PHP 코드에서 HTML을 완전히(?) 분리할 수 있습니다. 이와 같이 HTML을 PHP 코드와 분리하게 되면 웹사이트 개발 속도를 획기적으로 개선시킬 수 있게 됩니다. 양쪽 요소를 별개로 관리 개발할 수 있으며 최소한의 인터페이스만 서로 조정해 주면 되지요. 즉, 템플릿은 웹디자이너들이 담당하여 멋들어지게 만들 것이며, PHP 코드는 웹프로그래머들이 모든 능력을 총동원하여 강력하게 작성할 것이기 때문이지요.
웹디자이너와 PHP 프로그래머 사이에 유일한 통로수단이 바로 템플릿 변수이지요. 다른 것은 서로 전혀 관계없습니다. 앞장에서 설명한 달력을 가지고 이 관계를 설명해 보지요. 아래는 최종적으로 얻어야 할 웹페이지인 달력입니다. 현재는 2001년 12월 달력이 나타나 있지만 이것을 해가 바뀌고 달이 바뀌면 그 내용 역시 바뀌게 될 것입니다.
2001년 12월
             1 
 2   3    4    5    6    7    8 
 9  10   11   12   13   14   15 
16  17   18   19   20   21   22 
23  24   25   26   27   28   29 
30  31            
위와 같은 문서에서 웹디자이너가 담당해야 할 요소는 아래와 같이 달력 디자인 및 정적 데이터들일 것입니다.
{YEAR}년 {MONTH}월
{A1} {A2} {A3} {A4} {A5} {A6} {A7}
{B1} {B2} {B3} {B4} {B5} {B6} {B7}
{C1} {C2} {C3} {C4} {C5} {C6} {C7}
{D1} {D2} {D3} {D4} {D5} {D6} {D7}
{E1} {E2} {E3} {E4} {E5} {E6} {E7}
{F1} {F2} {F3} {F4} {F5} {F6} {F7}
디자인된 화면을 보니 동적으로 바뀌어야 할 데이터들이 모두 템플릿 변수 {A1}, {A2}, ...... , {F7}로 표시되어 있는 것을 알 수 있습니다. 이렇게 하는 것으로 디자이너가 할 일은 다 한 것입니다. 달력을 더 멋있게 만들고 안만들고는 웹디자이너 맘이지요. 아님 사장 맘인가?
이제 남은 것은 PHP 프로그래머가 년도와 월에 맞게 적절한 알고리즘을 이용하여 각 템플릿 변수에 값을 할당하는 것이겠지요. 알고리즘의 성능을 개선하는 것은 프로그래머가 알아서 할 일이며 디자이너와는 전혀 관계가 없지요.
{YEAR} <- "2001"
{MONTH} <- "12"
{A1} <- ""
{A2} <- ""
{A3} <- ""
{A4} <- ""
{A5} <- ""
{A6} <- ""
{A7} <- "1"
{B1} <- "2"

.
.
.

{F1} <- "30"
{F2} <- "31"
{F3} <- ""
{F4} <- ""
{F5} <- ""
{F6} <- ""
{F7} <- ""
결국 HTML과 PHP 코드를 분리하게 됨으로 얻은 이점은 디자이너와 프로그래머가 서로의 영역에서 그 능력을 최대로 발휘하면서 웹사이트의 디자인과 성능을 향상시킬 수 있다는 것이지요. 간단한 웹사이트에서야 한 사람이 이 모든 일을 해야 하니까 별의미가 없다고 생각할 지 모르지만 한 사람이 하더라도 일의 성격을 구분하여 작업할 수 있다는 것만으로도 많은 이득을 얻을 수 있습니다.
일정한 틀을 가지고 반복 사용되는 부분
보통 하나의 웹사이트에서 반복 사용되는 부분을 처리하는데 프레임 태그를 많이 사용합니다. 그러나 요즈음 대부분의 웹사이트에서는 반복되는 부분이 있음에도 불구하여 프레임을 거의 사용하지 않지요.
아래와 같은 예의 홈페이지를 살펴보면 하나의 페이지가 크게 4 구역으로 나누어져 있는 것을 알 수 있습니다. 상단에 위치한 구역에는 베너 및 주 메뉴가 있고, 좌측 구역에는 서브 메뉴가 있고, 중앙 구역은 메인 화면이 있고, 하단 구역에는 관리자 이름을 표시하는 글들이 있습니다.
< 홈페이지의 구성 >
이 중에 상단과 하단 구역은 모든 페이지에서 공유하는 구역이고 좌측 구역은 몇몇 관련 페이지들이 공유하는 구역입니다. 중앙 구역만이 유일하게 모든 페이지마다 다른 내용을 보여주고 있지요. 결국 이와 같은 경우에 공유되는 각 구역을 별도의 템플릿으로 작성해 놓는다면 다른 페이지에서 그 부분을 다시 작성하지 않더라도 템플릿으로 작성해 놓은 것을 읽어 들이는 것만으로도 하나의 페이지를 만들 수 있습니다. 중앙 구역만 각 페이지 마다 새로 작성하면 되는 것이지요.
[code php;gutter:false] <? include_once("class.hTemplate.php"); $tpl = new hTemplate("./templates"); $tpl->define( array( 'top' => 'top.htm', // 상단 구역에 대한 템플릿 'left' => 'left.htm', // 좌측 구역에 대한 템플릿 'center' => 'center.htm', // 중앙 구역에 대한 템플릿 'bottom' => 'bottom.htm' // 하단 구역에 대한 템플릿 ) ); . . . ?> [/code]
< 템플릿을 이용한 홈페이지 구성 >
이와같이 공유하는 구역에 대한 것은 템플릿을 이용하여 공유하게 되면 웹사이트 전체의 코드양을 상당수 줄일 수 있을 것입니다.

'phpsource > 템플릿' 카테고리의 다른 글

{후키템플릿}3.7.output()  (0) 2006.08.01
{후키템플릿}4.1.템플릿 파일 경로  (0) 2003.04.30
{후키템플릿}0.4.라이선스(License)  (0) 2002.01.28
{후키템플릿}7.4.URL 리디렉션  (0) 2002.01.28
FastTemplate 1.1.0  (0) 2000.08.06
Posted by 방글24