hTemplate – 9.4.중첩 블록을 이용하기

중첩 블록을 이용하기

FastTemplate은 블록들의 깊이를 하나로 제한합니다. 이것은 블록 안에 또 다른 블록(이하 중첩 블록)을 넣을 수 없다는 것을 말합니다. 따라서 중첩 블록이 필요하다면 해결방법은 오직 블록을 별도의 파일로 분리하는 것입니다.

하나의 웹페이지를 블록의 기능 제한때문에 분리 관리한다는 것은 불합리합니다. FastTemplate의 이러한 문제를 해결하기 위하여 중첩 블록을 허용하도록 Roland Roberts에 의해 수정된 rFastTemplate가 이미 공개되어 있습니다. 후키템플릿도 같은 이유로 FastTemplate을 수정하게 되었습니다. 물론 다른 이유도 있었지만……

중첩 블록을 이용하는 방법이라고 특별히 사용방법이 다르지는 않습니다. 위의 가게부 예제를 가지고 살펴보겠습니다. 여기서는 한 페이지 내에 12월 한달만이 아닌 2001년 4/4분기 4달을 전부 나타내도록 해 보지요.

2001년 4/4분기 가게부
2001년 9월 가게부
지출항목 지출금액(원)
자동차유지비 100,000
반찬값 80,000
학원비 350,000
2001년 10월 가게부
지출항목 지출금액(원)
자동차유지비 150,000
반찬값 130,000
학원비 350,000
2001년 11월 가게부
지출항목 지출금액(원)
자동차유지비 160,000
반찬값 140,000
학원비 350,000
2001년 12월 가게부
지출항목 지출금액(원)
자동차유지비 200,000
반찬값 180,000
학원비 350,000

위 문서를 가지고 템플릿을 작성해 보면 아래와 같이 될 것입니다.

{YEAR}년 {BRANCH}분기 가게부
{MONTH}월
지출항목 지출금액(원)
{ITEM} {MONEY}

템플릿 파일 작성

위의 템플릿에 대한 HTML 소스는 대략 다음과 같을 것입니다.

PHP 코드 작성 book.php

이제는 중첩 블록이 포함된 템플릿을 위한 PHP 문서를 구성하여 보겠습니다.

rFastTemplate와의 호환성

후키템플릿과 마찬가지로 블록의 중첩을 허용하고 있는 rFastTemplate와의 호환성을 유지하려면 일부 문장을 아래와 같이 수정하세요. 그러면 양쪽 모두에서 정상적으로 동작할 것입니다.

  • assign(‘row’, ‘row’, true); –> parse(‘DUMMY’, ‘.row’);
  • assign(‘month_row’, ‘month_row’, true); –> parse(‘DUMMY’, ‘.month_row’);
  • assign(‘row’, ”); –> clear_dynamic(‘row’)
  • assign(‘TABLE’, ‘table’); –> parse(‘TABLE’, ‘table’);

rFastTemplate에서 parse 함수의 첫 번째 인수에 지정된 이름은 의미없는 이름으로 어떠한 이름을 지정하여도 관계없습니다.

답글 남기기