A

A

3. Template Handler

 Template Handler#

http://doc.zeroboard.com/classTemplateHandler.html (class 구조)

 

제로보드XE는 몇 가지 특별한 기능을 사용하기 위해서 자체 Template 엔진을 이용합니다.
smarty등의 Template 엔진처럼 정해진 문법으로 작성된 템플릿 파일을 PHP 파일로 컴파일 후에 include만 하기 때문에 효율적으로 동작하게 됩니다.

 

  • 클래스 파일 위치 : ./classes/template/TemplateHandler.class.php
  • 동작방법

    • 인자로 넘겨받은 template_path, template_filename을 이용하여 템플릿 파일을 찾음
    • 해당 템플릿 파일이 있다고 판단되면 컴파일된 파일을 찾음
            (컴파일된 파일의 위치 : ./files/cache/template_compiled/{md5(path+filename}.compiled.php)
    • 컴파일된 파일이 없으면 source template file을 읽은후 parsing, 파일로 저장
    • compiled template file을 include
  • 템플릿 파일로 변수 할당하기
    • 템플릿을 지정하기 전에 Context::set('변수이름', $변수) 와 같은 방법으로 context setting을 하게 되면 템플릿에서는 {$변수이름}과 같이 세팅된 변수를 사용할 수 있습니다.

 

템플릿 문법#
  • 변수의 내용 출력 및 함수의 결과물 출력
    {와 $ 사이의 space character나 개행문자등이 없이 붙어 있어야 합니다.

    1. {$변수이름}
      {$변수이름[key]}

 

  • 함수 또는 변수의 설정
    {와 $ 사이에 @ 를 붙이면 결과를 return하지 않습니다.
    이 특징을 이용해서 변수설정이나 함수의 실행, php코드 사용을 할 수 있습니다.

    1. {@ $a = 1}
      {@ print $a}

     

  • 조건절의 사용 (if)

    1. <!--@if(조건문)-->
      ...
      <!--@elseif-->
      ...
    2. <!--@else-->
    3. ...
      <!--@end-->

 

  • 조건절의 사용 (switch)
    이 문법에는 문제가 있으니 사용에 주의해주시기 바랍니다. 개선토록 하겠습니다.
  1. <!--@switch($var)-->

  2. <!--@case('foo')-->

  3. ...

  4. <!--@break-->

  5. <!--@default-->

  6. ...

  7. <!--@end-->

 

switch문은 아래와 같은 예외적인 문법을 제공합니다.

'@break@case(...)'  =>  'break; case(...) :'

'@break@default'  => 'break; default :'

  1. <!--@switch($var)-->
    <!--@case('foo1')-->
    ...
    <!--@break@case('foo2')-->

    ...
    <!--@break@default-->
    ...
    <!--@end-->

 

  • foreach, for등의 반복문 사용

    1. <!--@foreach($변수 as $key => $val)-->
      {$key} - {$val}
      <!--@end-->

    2. <!--@for($i = 0; $i < 100; $i++)-->
      {$i}
      <!--@end-->

 

  • 다 른 template 파일 include
    template 파일 내에서 다른 template파일을 include할 수 있습니다.
    이때 경로를 지정하지 않으면 현재의 template file의 위치에서 찾고 없으면 ROOT부터 찾아나갑니다.
  1. <!--#include("./include.html")-->
    <!--#include("./common/tpl/include.html")-->

 

  • css 파일 import
    css파일을 사용하고자 할때 아래 문법을 이용하면 html 태그의 <head> .. </head> 사이에 link code가 추가 됩니다.
    이때 경로를 지정하지 않으면 현재의 template file의 위치에서 찾고 없으면 ROOT부터 찾아나갑니다.

    1. <!--%import("./css/style.css")-->

 

  • js 파일의 import
    js파일을 사용하고자 할때 아래 문법을 이용하면 html 태그의 <head> .. </head> 사이에 <script type="text/javascript" src="js파일"></script> 코드가 추가됩니다. 이때 경로를 지정하지 않으면 현재의 template file의 위치에서 찾고 없으면 ROOT부터 찾아나갑니다.

    1. <!--%import("./js/test.js")-->

     

  • xml js filter파일의 import
    xml js filter를 사용하고자 할때 아래 문법을 이용하면 지정된 필터를 컴파일하고 해당 문서에 필터를 적용하게 됩니다.
    이때 경로를 지정하지 않으면 현재의 template file의 위치에서 찾고 없으면 ROOT부터 찾아나갑니다.

    1. <!--%import("./filter/test.xml")-->

 

  • 주석
    HTML에 출력하지 않도록 감출 수 있습니다.

    1. <!--// HTML에 출력되지 않는 주석 -->

 

  • 기타 경로에 대한 처리 template에서 이미지 태그의 src값이 http:// 나 / 로 시작하지 않는다면 해당 템플릿이 요청된 path에서 찾도록 합니다. 작업PC에서 스킨등의 작업을 하고 그대로 서버에 올리면서 테스트하실 수 있습니다.

 

 

Recent Updates
    All Pages
      Show/Hide the left navigation
      Show/Hide bookmarks

      Header

      1. View current page

        zeroboard XE Manual

      loginBar