phpsource/템플릿2006. 9. 29. 09:46
written: Jan 28 2002
last modified: Oct 26 2006
템플릿변수에 관련된 용어 정리
후키템플릿에서 지원되는 템플릿변수(template variable)는 변수, 스위치문, 다이나믹 블록, 하위템플릿 인클루드입니다. 그동안 이들 변수를 호칭할 때 단순문, 블록문, 인클루드문 등 통일되지 못한 용어를 사용하여 왔습니다. 이를 정리할 필요가 있어 앞으로는 아래 표에서와 같이 단순변수, 조건변수, 블록변수, 파일변수라는 용어로 통일하여 호칭하고자 합니다.
< 템플릿변수 용어(1.2.0 버전부터) >
변경전 변경후 구문형식 예
변수,템플릿변수,단순문 단순변수 {VAR}
스위치문 조건변수 {VAR, caseA | caseB}
다이나믹 블록,블록문 블록변수 {@VAR}블록내용{/}
하위템플릿 인클루드,인클루드문 파일변수 {#./test.htm}
템플릿변수의 구문 형식
1.2.0 버전부터 템플릿변수의 구문 형식이 아래와 같이 정리되었습니다. 반복문 위치에는 여러가지 변수옵션을 지정할 수 있으며, 초기값 위치에는 필터명령을 지정할 수 있습니다.
< 변수 구문 형식 >
종 류 1.1.1 버전까지의 구문형식 1.2.0 버전부터의 구문형식
단순변수 {변수명::초기값} {변수명;변수옵션;필터명령}
{&변수명;변수옵션;필터명령}변수내용{/} *1
조건변수 {변수명::초기값,경우의수} {변수명;;초기값,경우의수}*2
{?변수명;변수옵션;필터명령,경우의수}*3
{?변수명;변수옵션;필터명령}경우의수{/}
블록변수 {@변수명}블록내용{/변수명} {@변수명;변수옵션;필터명령}블록내용{/}
파일변수 {#파일명} {#변수명;변수옵션;필터명령}파일명{/}
*1 [주의] - 2006.10.26

단순변수의 새로운 구문형식 {&변수명}{/}을 웹에디터에서 사용할 때 문제가 좀 있습니다.

"&" 문자가 HTML 에디터에서 "&nbsp;", "&lt;", "&gt;", "&amp;", "&quot;", "&#039;" 등에서 자주 사용되다보니 발생하는 문제입니다.

따라서 단순변수의 새로운 구문형식인 {&변수명}{/}을 1.2.0 패치버전(또는 다음버전)에서는 더 이상 사용하지 않겠습니다.
*2 [상위호환성 삭제] - 2008.06.06

상위버전에서는 이 형식({변수명;;초기값,경우의수})을 지원하지 않습니다.
*3 [오기수정] - 2008.06.06

{?변수명;변수옵션;필터명령,경우의수}은 허용하지 않는 구문형식입니다.
{VAR1;;100}
{&VAR1;;100}{/}
위의 2가지 단순변수들은 동일한 결과를 나타냅니다. 템플릿 변수 VAR1을 컴파일하면 단순변수 VAR1에는 "100" 값이 저장됩니다.
1.2.0 버전부터는 css 문과의 충돌을 피하기 위하여 반복문과 초기값을 구분하는 구분자를 콜론(:) 대신에 세미콜론(;)을 사용합니다.
{변수명:반복문,경우의수}과 {변수명:반복문}을 제외한 舊구문형식에서 콜론문자(:)를 사용한 구문형식은 1.2.0 버전에서도 계속 사용할 수 있으나 향후에 버전업될 버전과의 호환성을 보증할 수는 없으니 콜론문자(:) 대신에 세미콜론문자(;)를 이용하여 템플릿 문서를 작성하시기 바랍니다.
변수 옵션
변수 옵션은 1.2.0 버전부터 지정할 수 있으며 지정할 수 있는 변수 옵션으로는 repeat, ctype, allow_filter, tr가 있습니다. 자세한 것은 아래표의 각 항목을 참조바랍니다.
< 변수 옵션 >
변수 옵션 기 능 참 조
repeat 반복문 7.1.반복문
ctype 내용 형식 7.2.내용 형식
allow_filter 필터 처리 8.2.필터 명령
tr TR 용법 7.9.TR 용법
{&VAR2;repeat=1-3;="[[["."{_SELF}"."]]]"}변수내용{/}
템플릿변수 VAR2을 컴파일/할당하면 VAR2.1, VAR2.2, VAR2.3에는 모두 "[[[변수내용]]]" 값이 저장됩니다.
{?VAR;1-3;2}A|B|C{/}
{?VAR;repeat=1-3;2}A|B|C{/}
위의 2가지 조건변수들은 동일한 결과를 나타냅니다.
[code html;gutter:false] {@BLOCK;ctype=text&allow_filter=userfunc;=|userfunc()} 블록내용 {/} {#;allow_filter=func_a,func_b,=;=|func_a(); ="{_SELF}"."tail_value"; =|func_b(); }./test.htm{/}[/code]
위와 같은 표현들도 새로운 구문형식에 맞게 작성된 것으로 정상적으로 동작합니다. 그러나 템플릿 문서에서는 가능한 너무 복잡한 표현은 피하라고 권하고 싶습니다.
필터 명령
지정할 수 있는 필터 명령에는 필터 상수, php 명령, 초기화 명령, 사용자 정의 필터 함수, 내장 필터 함수가 있습니다. 자세한 것은 "8.2.필터 명령"을 참조바랍니다.
변수명 생략
모든 템플릿변수(단순문,스위치문,블록문,인클루드문)의 변수명를 생략할 수 있습니다.
변수명을 생략하면 새롭게 추가된 변수명 예약어인 "_AUTO"(예약어 _AUTO는 향후 버전에서 그 이름이 변경될 수 있으므로 사용자가 직접 사용할 수 없음)로 시작되는 변수명이 자동 지정됩니다.
{&}{/} --->> {&_AUTO}{/}
{?}a|b|c{/} --->> {?_AUTO}a|b|c{/}
{@}블록내용{/} --->> {@_AUTO}블록내용{/}
{#}파일명{/} --->> {#_AUTO}파일명{/}
블록변수의 변수명을 생략한 경우에는 블록변수에 대한 assign() 함수를 지정하지 않아도 자동 할당되어 처리됩니다. 자세한 것은 "5.3.블록변수"의 "자동 할당 기능"을 참조바랍니다.

Posted by 방글24