hTemplate – 5.4.파일 변수

사용방법

템플릿 파일 내에 하위템플릿을 포함하는 복잡한 구조의 템플릿을 구성하는 경우를 살펴보겠습니다.

이러한 경우에는 인클루드하려는 하위템플릿 파일을 상위템플릿 파일 내에 <!–#include file=”하위템플릿파일명”–> 또는 {#하위템플릿파일명}와 같이 표기합니다. 이와 같이 변수내용을 별도의 파일로 작성되어 컴파일할 때 변수내용을 읽어들이도록 작성된 템플릿 변수를 파일변수(인클루드문)라고 합니다.

  • <!–#include file=”파일명”–>
  • {#파일명}

clude file=”하위템플릿파일명”–> 표기법은 SSI(Server Side Include) 문법으로 서버(HTTPd)에서 처리되는 태그입니다. 이 표기법의 장점은 드림위버에서 편집할 때 인클루드되는 파일을 함께 보며 작업할 수 있다는 것입니다.

구문 형식의 확장

1.2.0 버전부터 {#변수명}파일명{/}와 같은 구문형식을 사용할 수 있으며, 이전 버전에서 사용하던 {#파일명}도 앞으로도 계속 사용할 수 있습니다.

  • {#변수명;변수옵션;필터명령}파일명{/}

변수옵션과 필터명령은 1.2.0 버전부터 사용할 수 있습니다. {#변수명}파일명{/} 형식과 {#파일명} 형식을 구분하는 기준은 {#string} 에서 string이 실제로 존재하는 파일명이면 {#파일명} 형식으로 처리하고 존재하지 않는 파일명이면 {#변수명}파일명{/} 형식으로 처리합니다.

하위 템플릿 파일의 경로

하위템플릿 파일 include.htm은 템플릿 변수가 포함되어 있는 또 다른 템플릿 파일입니다. 하위템플릿의 경로는 현재 템플릿 문서에 대한 상대경로로 지정됩니다. 단, 상위디렉토리는 지정할 수 없습니다.

  • <!–#include file=”sub/sub_include.htm”–> 또는
  • <!–#include file=”./sub/sub_include.htm”–> 또는
  • {#sub/sub_include.htm} 또는
  • {#./sub/sub_include.htm} 또는
  • {#}./sub/sub_include.htm{/} 또는
  • {#}sub/sub_include.htm{/}

아래와 같이 절대경로를 지정할 수도 있습니다.

  • <!–#include file=”/other-templates/include.htm”–> 또는
  • {#/other-templates/include.htm} 또는
  • {#}/other-templates/include.htm{/}

복잡한 구조의 템플릿 파일의 예

아래의 예는 최상위 템플릿 파일 “Main.htm”을 기점으로 연속적으로 수많은 하위템플릿 파일이 인클루드되어 있는 경우입니다.

< 그림1 템플릿 파일의 구성 >

이러한 경우의 각 템플릿 파일의 내용이 아래와 같다고 하지요.

<최상위 템플릿 파일 Main.htm 내용>

<하위 템플릿 파일include-1.htm 내용>

<하위 템플릿 파일include-2.htm 내용>

<하위 템플릿 파일include-21.htm 내용>

<하위 템플릿 파일include-22.htm 내용>

<하위 템플릿 파일include-211.htm 내용>

<하위 템플릿 파일include-212.htm 내용>

<하위 템플릿 파일include-2111.htm 내용>

<하위 템플릿 파일include-2112.htm 내용>

<하위 템플릿 파일include-21111.htm 내용>

<하위 템플릿 파일include-21112.htm 내용>

이제는 하위템플릿을 인클루드하기 위한 PHP 문서를 구성하여 보겠습니다.

최상위 템플릿 파일에 대하여 define(), assign(), output()를 순서대로 실행하게 되면 아래와 같은 결과가 브라우저에 표시될 것입니다.

< 그림2 실행 결과 >

하위템플릿 파일의 처리순서

하위템플릿 파일에서도 일반 템플릿 파일과 동일하게 모든 기능을 사용할 수 있습니다. 그러면 그림1과 같은 템플릿 구조에서 하위템플릿 파일에 포함된 템플릿변수에 값은 언제 할당될까요?

최상위 템플릿 파일에 해당하는 템플릿 main을 assign() 함수에서 처리할 때 그 하위에 있는 모든 템플릿을 먼저 처리하게 됩니다. 그림1과 같은 경우라면 assign 처리되는 순서는 아래와 같습니다.

  1. include-1.htm
  2. include-21111.htm
  3. include-21112.htm
  4. include-2111.htm
  5. include-2112.htm
  6. include-211.htm
  7. include-212.htm
  8. include-21.htm
  9. include-22.htm
  10. include-2.htm
  11. Main.htm

위와 같이 최하위 템플릿을 가장 먼저 처리하며 최상위 템플릿을 가장 뒤에 처리하게 됩니다.

파일변수에서 파일명의 변수처리

1.2.0 버전부터는 파일명을 변수로 처리하기 위해서는 아래와 같이 단순변수의 필터명령을 이용할 수 있습니다.

답글 남기기