hTemplate – 8.8.래핑(wrapping)

[버전1.2.0 제안서] 여기서 기술한 내용은 확정된 용법이 아니라 다음 버전을 발표할 때까지 여러분의 의견 수렴을 통해 더 검토되어야 하는 제안서(proposal)로 문법적인 내용이 다소 변경될 수 있음을 미리 밝혀둡니다.
다음 버전부터는 필터 기능을 지원하지 않습니다. 필터 기능은 다른 방법으로 단순화시켜 제공할 생각입니다.

래핑(wrapping)

이미 작성된 템플릿 문서와 php 문서를 전혀 건드리지 않고 이 문서 앞 뒤로 새로운 템플릿 문서를 추가하거나 기작성된 템플릿 문서를 필터명령으로 수정할 수 있도록 하는 기능입니다.

그림에서 보듯이 내용물이 동일하더라도 포장을 어떻게 하느냐에 따라 결과물을 전혀 다르게 보일 수 있습니다. 이와 같이 랩핑 기능을 이용하면 기작성되어 있는 템플릿 문서와 php 문서를 손대지 않고도 전혀 다른 결과물을 얻을 수 있습니다.

기작성되어 있는 템플릿 문서가 아래와 같을 경우를 살펴보겠습니다.

일반적으로 php 문서에서 main.htm 문서를 처리하면 “오른쪽에 우리집이 있다”라는 HTML 스크립트를 생성할 수 있습니다. 이 문서를 래핑 기능과 필터 기능을 이용하면 아래와 같이 수정할 수 있습니다.

기작성된 템플릿 문서 main.htm을 래핑하는 래핑 문서 wrap.main.htm을 같은 디렉토리 또는 그 상위 디렉토리에 저장하는 것으로 래핑 기능을 사용할 준비는 다 된 것입니다.

래핑 파일(wrap.main.htm) 내에 파일명이 생략된 파일변수가 존재하면 아래와 같이 wrapped 파일명(main.htm)을 지정한 것 문서와 같은 동작을 합니다.

php 스크립트에서는 main.htm 대신에 wrap.main.htm을 define 처리합니다. 이 부분까지가 래핑 기능이 하는 역할입니다. 나머지는 이미 소개한 필터 기능에 의하여 “오른쪽에 우리집이 있다” 대신에 “왼쪽에 우리집이 있다”라는 HTML 스크립트를 생성하게 됩니다.

래핑 문서의 파일명은 기작성 템플릿 문서 파일명 앞에 서두문자 “wrap.”을 붙이면 됩니다.

앞에서 설명한 바와 같이 래핑 문서를 기작성 템플릿 문서와 동일한 디렉토리에 저장할 수도 있고 그 상위 디렉토리에 저장할 수도 있습니다. 만약 두 곳 모두에 래핑 문서가 존재한다면 기작성 템플릿 문서와 동일한 디렉토리에 있는 래핑 문서에 우선권이 있습니다..

< 특정 템플릿에 종속된 래핑문서 >

템플릿 문서와 래핑 문서가 위와 같은 구조로 구성된 경우를 살펴보면, blogmeme_cobalt 디렉토리와 blogmeme_white 디렉토리에 있는 템플릿 문서 skin.html은 각각 동일한 디렉토리에 있는 래핑 문서 wrap.skin.html에 의해 처리되며, blogmeme_yellow 디렉토리에 있는 템플릿 문서 skin.html은 그 상위 디렉토리에 있는 래핑 문서 wrap.skin.html에 의해 처리됩니다.

만약에 동일한 디렉토리 내에 다양한 이름을 가진 템플릿 문서를 모두 처리할 수 있는 래핑 문서를 작성하려면 그 이름을 아래와 같이 wrap._global.html로 지정하면 됩니다..

< 모든 템플릿에서 접근할 수 있는 래핑문서 >

템플릿 문서와 래핑 문서가 위와 같은 구조로 구성된 경우를 살펴보면, blogmeme_cobalt 디렉토리에 있는 템플릿 문서 skin_1.html, skin_2.html, skin_3.html은 모두 동일한 디렉토리에 있는 래핑 문서 wrap._global.html에 의해 처리되며, blogmeme_white 디렉토리에 있는 템플릿 문서 skin.html은 그 상위 디렉토리에 있는 래핑 문서 wrap._global.html에 의해 처리됩니다.

위의 4가지 경우의 래핑문서가 모두 존재한다면 그 우선순위는 아래와 같습니다.

  • ① 동일 디렉토리의 wrap.skin.html
  • ② 차상위 디렉토리의 wrap.skin.html
  • ③ 동일 디렉토리의 wrap._global.html
  • ④ 차상위 디렉토리의 wrap._global.html

답글 남기기