|
|
|
3. Template Handler (current)
|
SMaker |
2011.01.17 12:27:32 |
|
|
|
Restore
<h3 id="h1274768123255">Template Handler</h3><p><span class="external">[</span><span class="external">http://doc.xpressengine.com/classTemplateHandler.html|</span><span class="external">http://doc.xpressengine.com/classTemplateHandler.html - </span><span class="external">class 구조]</span><br></p><p>XE는 몇 가지 특별한 기능을 사용하기 위해서 자체 Template 엔진을 이용합니다.<br>
smarty등의 템플릿 엔진처럼 정해진 문법으로 작성된 템플릿 파일을 PHP 파일로 컴파일 후에 include만 하기 때문에 효율적으로 동작하게 됩니다.</p><ul>
<li>클래스 파일 위치 : ./classes/template/TemplateHandler.class.php</li>
<li>
<p>동작방법</p>
<ul>
<li>인자로 넘겨받은 template_path, template_filename을 이용하여 템플릿 파일을 찾음</li>
<li>해당 템플릿 파일이 있다고 판단되면 컴파일된 파일을 찾음<br>
(컴파일된 파일의 위치 : ./files/cache/template_compiled/{md5(path+filename}.compiled.php)</li>
<li>컴파일된 파일이 없으면 source template file을 읽은후 parsing, 파일로 저장</li>
<li>compiled template file을 include</li>
</ul>
</li>
<li>템플릿 파일로 변수 할당하기
<ul>
<li>템플릿을 지정하기 전에 Context::set('변수이름', $변수) 와 같은 방법으로 context setting을 하게 되면 템플릿에서는 {$변수이름}과 같이 세팅된 변수를 사용할 수 있습니다.</li>
</ul>
</li>
</ul><h3 id="h1274768123257">템플릿 문법</h3><ul>
<li>변수의 내용 출력 및 함수의 결과물 출력 {와 $ 사이의 space character나 개행문자등이 없이 붙어 있어야 합니다.</li>
</ul><div class="code" code_type="xml" editor_component="code_highlighter">{$변수이름} {$변수이름[key]}</div><ul>
<li>함수 또는 변수의 설정 {와 $ 사이에 @ 를 붙이면 결과를 return하지 않습니다. 이 특징을 이용해서 변수설정이나 함수의 실행, php코드 사용을 할 수 있습니다.</li>
</ul><div class="code" code_type="xml" editor_component="code_highlighter">{@ $a = 1}<br>
{@ print $a}</div><ul><li>조건절의 사용 (if)</li></ul><div class="code" code_type="xml" editor_component="code_highlighter"><!--@if(조건문1)--><br>
...<br>
<!--@elseif(조건문2)-><br>
...<br>
<!--@else--><br>
...<br>
<!--@end--></div><ul>
<li>조건절의 사용 (switch)</li>
</ul><blockquote class="citation"><p>이 문법에는 문제가 있으니 사용에 주의해주시기 바랍니다. 개선토록 하겠습니다.</p></blockquote><div class="code" code_type="xml" editor_component="code_highlighter"><!--@switch($var)--><br>
<!--@case('foo')--><br>
...<br>
<!--@break--><br>
<!--@default--><br>
...<br>
<!--@end--></div><p>switch 문의 예외 문법<br><br>'@break@case(...)' => 'break; case(...) :'<br><br>'@break@default' => 'break; default :'<br></p><div class="code" code_type="xml" editor_component="code_highlighter"><!--@switch($var)--><br>
<!--@case('foo1')--><br>
...<br>
<!--@break@case('foo2')--><br>
...<br>
<!--@break@default--><br>
...<br>
<!--@end--></div><ul>
<li>foreach, for등의 반복문 사용</li>
</ul><div style="position: relative; z-index: 999; top: 0px; left: 0px; display: block;" class="code" code_type="xml" editor_component="code_highlighter"><!--@foreach($변수 as $key => $val)--><br>
{$key} - {$val}<br>
<!--@end--></div><div class="code" code_type="xml" editor_component="code_highlighter"><!--2for($i= 0; $i < 100; $i++)--><br>
{$i}<br>
<!--@end--></div><ul>
<li>다른 template 파일 include</li>
</ul><blockquote class="citation"><p>템플릿 파일 내에서 또다른 템플릿 파일을 include 할 수 있습니다.
이 때 경로를 지정하지 않으면 현재의 템플릿 파일(template file)의 위치에서 찾고 없으면 ROOT부터 찾아나갑니다.</p></blockquote><blockquote class="citation"><p>템플릿 파일에서 공용으로 사용되는 부분이 있다면 공용으로 사용되는 부분을 개별 파일로 include 하게 하는 것이 유지/보수에 유리합니다.</p></blockquote><div class="code" code_type="xml" editor_component="code_highlighter"><!--#include("./include.html")--><br>
<!--#include("./common/tpl/include.html")--></div><ul>
<li>css 파일 import</li>
</ul><blockquote class="citation"><p>css 파일을 사용하고자 할 때 아래 문법을 이용하면 html 태그의 <head> .. </head> 사이에 link code가 추가됩니다.
이 때 경로를 지정하지 않으면 현재의 템플릿 파일(template file)의 위치에서 찾고, 없으면 ROOT부터 찾아나갑니다.</p></blockquote><div class="code" code_type="xml" editor_component="code_highlighter"><!--%import("./css/style.css")--></div><ul>
<li>자바스크립트 파일의 import</li>
</ul><blockquote class="citation"><p>자바스크립트 파일을 사용하고자 할때 아래 문법을 이용하면 html 태그의 <head> .. </head> 사이에 <script type="text/javascript" src="자바스크립트파일"></script> 코드가 추가됩니다.
이때 경로를 지정하지 않으면 현재의 template file의 위치에서 찾고 없으면 ROOT부터 찾아나갑니다.</p></blockquote><div class="code" code_type="xml" editor_component="code_highlighter"><!--%import("./js/test.js")--></div><ul><li>자바스크립트 필터(Xml Js Filter) 파일의 import</li></ul><blockquote class="citation"><p>자바스크립트 필터(Xml Js Filter)를 사용하고자 할 때 아래 문법을 이용하면 지정된 필터를 컴파일하고 해당 문서에 필터를 적용하게 됩니다.
이 때 경로를 지정하지 않으면 현재의 템플릿 파일(template file)의 위치에서 찾고 없으면 ROOT부터 찾아나갑니다.</p></blockquote><div class="code" code_type="xml" editor_component="code_highlighter"><!--%import("./filter/text.xml")--></div><ul>
<li>주석</li>
</ul><blockquote class="citation"><p>HTML에 출력하지 않도록 감출 수 있습니다.</p></blockquote><div class="code" code_type="xml" editor_component="code_highlighter"><!--// HTML에 출력되지 않는 주석 --><br>
<!--// 템플릿 파일에서만 볼 수 있는 주석입니다 --></div><ul>
<li>기타 경로에 대한 처리</li>
</ul><blockquote class="citation"><p>템플릿에서 이미지 태그의 src값이 http:// 나 / 로 시작하지 않는다면 해당 템플릿이 요청된 위치(path)에서 찾도록 합니다.
작업 PC에서 스킨 등의 작업을 하고 그대로 서버에 올리면서 테스트하실 수 있습니다.</p></blockquote>
|
SMaker |
2011.01.16 22:08:05 |
|
|
|
Restore
<h3 id="h1274768123255">Template Handler</h3><p><span class="external">[</span><span class="external">http://doc.xpressengine.com/classTemplateHandler.html|</span><span class="external">http://doc.xpressengine.com/classTemplateHandler.html - </span><span class="external">class 구조]</span><br></p><p>XE는 몇 가지 특별한 기능을 사용하기 위해서 자체 Template 엔진을 이용합니다.<br>
smarty등의 Template 엔진처럼 정해진 문법으로 작성된 템플릿 파일을 PHP 파일로 컴파일 후에 include만 하기 때문에 효율적으로 동작하게 됩니다.</p><ul>
<li>클래스 파일 위치 : ./classes/template/TemplateHandler.class.php</li>
<li>
<p>동작방법</p>
<ul>
<li>인자로 넘겨받은 template_path, template_filename을 이용하여 템플릿 파일을 찾음</li>
<li>해당 템플릿 파일이 있다고 판단되면 컴파일된 파일을 찾음<br>
(컴파일된 파일의 위치 : ./files/cache/template_compiled/{md5(path+filename}.compiled.php)</li>
<li>컴파일된 파일이 없으면 source template file을 읽은후 parsing, 파일로 저장</li>
<li>compiled template file을 include</li>
</ul>
</li>
<li>템플릿 파일로 변수 할당하기
<ul>
<li>템플릿을 지정하기 전에 Context::set('변수이름', $변수) 와 같은 방법으로 context setting을 하게 되면 템플릿에서는 {$변수이름}과 같이 세팅된 변수를 사용할 수 있습니다.</li>
</ul>
</li>
</ul><h3 id="h1274768123257">템플릿 문법</h3><ul>
<li>변수의 내용 출력 및 함수의 결과물 출력 {와 $ 사이의 space character나 개행문자등이 없이 붙어 있어야 합니다.</li>
</ul><div class="code" code_type="xml" editor_component="code_highlighter">{$변수이름} {$변수이름[key]}</div><ul>
<li>함수 또는 변수의 설정 {와 $ 사이에 @ 를 붙이면 결과를 return하지 않습니다. 이 특징을 이용해서 변수설정이나 함수의 실행, php코드 사용을 할 수 있습니다.</li>
</ul><div class="code" code_type="xml" editor_component="code_highlighter">{@ $a = 1}<br>
{@ print $a}</div><ul><li>조건절의 사용 (if)</li></ul><div class="code" code_type="xml" editor_component="code_highlighter"><!--@if(조건문1)--><br>
...<br>
<!--@elseif(조건문2)-><br>
...<br>
<!--@else--><br>
...<br>
<!--@end--></div><ul>
<li>조건절의 사용 (switch)<br>
이 문법에는 문제가 있으니 사용에 주의해주시기 바랍니다. 개선토록 하겠습니다.</li>
</ul><div class="code" code_type="xml" editor_component="code_highlighter"><!--@switch($var)--><br>
<!--@case('foo')--><br>
...<br>
<!--@break--><br>
<!--@default--><br>
...<br>
<!--@end--></div><p style="margin-left: 2em;">switch문은 아래와 같은 예외적인 문법을 제공합니다.</p><p style="margin-left: 2em;">'@break@case(...)' => 'break; case(...) :'</p><p style="margin-left: 2em;">'+
'+
'@break@default' => 'break; default :'</p><div class="code" code_type="xml" editor_component="code_highlighter"><!--@switch($var)--><br>
<!--@case('foo1')--><br>
...<br>
<!--@break@case('foo2')--><br>
...<br>
<!--@break@default--><br>
...<br>
<!--@end--></div><ul>
<li>foreach, for등의 반복문 사용</li>
</ul><div style="position: relative; z-index: 999; top: 0px; left: 0px; display: block;" class="code" code_type="xml" editor_component="code_highlighter"><!--@foreach($변수 as $key => $val)--><br>
{$key} - {$val}<br>
<!--@end--></div><div class="code" code_type="xml" editor_component="code_highlighter"><!--2for($i= 0; $i < 100; $i++)--><br>
{$i}<br>
<!--@end--></div><ul>
<li>다 른 template 파일 include<br>
template 파일 내에서 다른 template파일을 include할 수 있습니다.<br>
이때 경로를 지정하지 않으면 현재의 template file의 위치에서 찾고 없으면 ROOT부터 찾아나갑니다.</li>
</ul><div class="code" code_type="xml" editor_component="code_highlighter"><!--#include("./include.html")--><br>
<!--#include("./common/tpl/include.html")--></div><ul>
<li>css 파일 import</li>
</ul><blockquote class="citation"><p>css 파일을 사용하고자 할 때 아래 문법을 이용하면 html 태그의 <head> .. </head> 사이에 link code가 추가됩니다.
이 때 경로를 지정하지 않으면 현재의 template file의 위치에서 찾고, 없으면 ROOT부터 찾아나갑니다.</p></blockquote><div class="code" code_type="xml" editor_component="code_highlighter"><!--%import("./css/style.css")--></div><ul>
<li>자바스크립트 파일의 import</li>
</ul><blockquote class="citation"><p>자바스크립트 파일을 사용하고자 할때 아래 문법을 이용하면 html 태그의 <head> .. </head> 사이에 <script type="text/javascript" src="자바스크립트파일"></script> 코드가 추가됩니다.
이때 경로를 지정하지 않으면 현재의 template file의 위치에서 찾고 없으면 ROOT부터 찾아나갑니다.</p></blockquote><div class="code" code_type="xml" editor_component="code_highlighter"><!--%import("./js/test.js")--></div><ul><li>xml js filter 파일의 import</li></ul><blockquote class="citation"><p>xml js filter를 사용하고자 할 때 아래 문법을 이용하면 지정된 필터를 컴파일하고 해당 문서에 필터를 적용하게 됩니다.
이 때 경로를 지정하지 않으면 현재의 template file의 위치에서 찾고 없으면 ROOT부터 찾아나갑니다.</p></blockquote><div class="code" code_type="xml" editor_component="code_highlighter"><!--%import("./filter/text.xml")--></div><ul>
<li>
<p>주석<br>
HTML에 출력하지 않도록 감출 수 있습니다.</p>
<ol class="code">
<li><!--// HTML에 출력되지 않는 주석 --></li>
</ol>
</li>
</ul><ul>
<li>기타 경로에 대한 처리 template에서 이미지 태그의 src값이 <span class="ext-link">http://</span> 나 / 로 시작하지 않는다면 해당 템플릿이 요청된 path에서 찾도록 합니다. 작업PC에서 스킨등의 작업을 하고 그대로 서버에 올리면서 테스트하실 수 있습니다.</li>
</ul>
|
SMaker |
2010.05.25 15:33:03 |
|
|
|
Restore
<h3 id="h1274768123255">Template Handler</h3><p><span class="external">[</span><span class="external">http://doc.xpressengine.com/classTemplateHandler.html|</span><span class="external">class 구조 보기]</span><br></p><p>XE는 몇 가지 특별한 기능을 사용하기 위해서 자체 Template 엔진을 이용합니다.<br>
smarty등의 Template 엔진처럼 정해진 문법으로 작성된 템플릿 파일을 PHP 파일로 컴파일 후에 include만 하기 때문에 효율적으로 동작하게 됩니다.</p><ul>
<li>클래스 파일 위치 : ./classes/template/TemplateHandler.class.php</li>
<li>
<p>동작방법</p>
<ul>
<li>인자로 넘겨받은 template_path, template_filename을 이용하여 템플릿 파일을 찾음</li>
<li>해당 템플릿 파일이 있다고 판단되면 컴파일된 파일을 찾음<br>
(컴파일된 파일의 위치 : ./files/cache/template_compiled/{md5(path+filename}.compiled.php)</li>
<li>컴파일된 파일이 없으면 source template file을 읽은후 parsing, 파일로 저장</li>
<li>compiled template file을 include</li>
</ul>
</li>
<li>템플릿 파일로 변수 할당하기
<ul>
<li>템플릿을 지정하기 전에 Context::set('변수이름', $변수) 와 같은 방법으로 context setting을 하게 되면 템플릿에서는 {$변수이름}과 같이 세팅된 변수를 사용할 수 있습니다.</li>
</ul>
</li>
</ul><h3 id="h1274768123257">템플릿 문법</h3><ul>
<li>변수의 내용 출력 및 함수의 결과물 출력 {와 $ 사이의 space character나 개행문자등이 없이 붙어 있어야 합니다.</li>
</ul><div class="code" code_type="xml" editor_component="code_highlighter">{$변수이름} {$변수이름[key]}</div><ul>
<li>함수 또는 변수의 설정 {와 $ 사이에 @ 를 붙이면 결과를 return하지 않습니다. 이 특징을 이용해서 변수설정이나 함수의 실행, php코드 사용을 할 수 있습니다.</li>
</ul><div class="code" code_type="xml" editor_component="code_highlighter">{@ $a = 1}<br>
{@ print $a}</div><ul><li>조건절의 사용 (if)</li></ul><div class="code" code_type="xml" editor_component="code_highlighter"><!--@if(조건문1)--><br>
...<br>
<!--@elseif(조건문2)-><br>
...<br>
<!--@else--><br>
...<br>
<!--@end--></div><ul>
<li>조건절의 사용 (switch)<br>
이 문법에는 문제가 있으니 사용에 주의해주시기 바랍니다. 개선토록 하겠습니다.</li>
</ul><div class="code" code_type="xml" editor_component="code_highlighter"><!--@switch($var)--><br>
<!--@case('foo')--><br>
...<br>
<!--@break--><br>
<!--@default--><br>
...<br>
<!--@end--></div><p style="margin-left: 2em;">switch문은 아래와 같은 예외적인 문법을 제공합니다.</p><p style="margin-left: 2em;">'@break@case(...)' => 'break; case(...) :'</p><p style="margin-left: 2em;">'@break@default' => 'break; default :'</p><div class="code" code_type="xml" editor_component="code_highlighter"><!--@switch($var)--><br>
<!--@case('foo1')--><br>
...<br>
<!--@break@case('foo2')--><br>
...<br>
<!--@break@default--><br>
...<br>
<!--@end--></div><ul>
<li>foreach, for등의 반복문 사용</li>
</ul><div style="position: relative; z-index: 999; top: 0px; left: 0px; display: block;" class="code" code_type="xml" editor_component="code_highlighter"><!--@foreach($변수 as $key => $val)--><br>
{$key} - {$val}<br>
<!--@end--></div><div class="code" code_type="xml" editor_component="code_highlighter"><!--2for($i= 0; $i < 100; $i++)--><br>
{$i}<br>
<!--@end--></div><ul>
<li>다 른 template 파일 include<br>
template 파일 내에서 다른 template파일을 include할 수 있습니다.<br>
이때 경로를 지정하지 않으면 현재의 template file의 위치에서 찾고 없으면 ROOT부터 찾아나갑니다.</li>
</ul><div class="code" code_type="xml" editor_component="code_highlighter"><!--#include("./include.html")--><br>
<!--#include("./common/tpl/include.html")--></div><ul>
<li>css 파일 import</li>
</ul><blockquote class="citation"><p>css 파일을 사용하고자 할 때 아래 문법을 이용하면 html 태그의 <head> .. </head> 사이에 link code가 추가됩니다.
이 때 경로를 지정하지 않으면 현재의 template file의 위치에서 찾고, 없으면 ROOT부터 찾아나갑니다.</p></blockquote><div class="code" code_type="xml" editor_component="code_highlighter"><!--%import("./css/style.css")--></div><ul>
<li>자바스크립트 파일의 import</li>
</ul><blockquote class="citation"><p>자바스크립트 파일을 사용하고자 할때 아래 문법을 이용하면 html 태그의 <head> .. </head> 사이에 <script type="text/javascript" src="자바스크립트파일"></script> 코드가 추가됩니다.
이때 경로를 지정하지 않으면 현재의 template file의 위치에서 찾고 없으면 ROOT부터 찾아나갑니다.</p></blockquote><div class="code" code_type="xml" editor_component="code_highlighter"><!--%import("./js/test.js")--></div><ul><li>xml js filter 파일의 import</li></ul><blockquote class="citation"><p>xml js filter를 사용하고자 할 때 아래 문법을 이용하면 지정된 필터를 컴파일하고 해당 문서에 필터를 적용하게 됩니다.
이 때 경로를 지정하지 않으면 현재의 template file의 위치에서 찾고 없으면 ROOT부터 찾아나갑니다.</p></blockquote><div class="code" code_type="xml" editor_component="code_highlighter"><!--%import("./filter/text.xml")--></div><ul>
<li>
<p>주석<br>
HTML에 출력하지 않도록 감출 수 있습니다.</p>
<ol class="code">
<li><!--// HTML에 출력되지 않는 주석 --></li>
</ol>
</li>
</ul><ul>
<li>기타 경로에 대한 처리 template에서 이미지 태그의 src값이 <span class="ext-link">http://</span> 나 / 로 시작하지 않는다면 해당 템플릿이 요청된 path에서 찾도록 합니다. 작업PC에서 스킨등의 작업을 하고 그대로 서버에 올리면서 테스트하실 수 있습니다.</li>
</ul>
|
SMaker |
2010.05.25 15:32:42 |
|
|
|
Restore
<h3 id="h1274768123255">Template Handler</h3><p><span class="external">[class 구조 보기:http://doc.xpressengine.com/classTemplateHandler.html]</span><br></p><p>XE는 몇 가지 특별한 기능을 사용하기 위해서 자체 Template 엔진을 이용합니다.<br>
smarty등의 Template 엔진처럼 정해진 문법으로 작성된 템플릿 파일을 PHP 파일로 컴파일 후에 include만 하기 때문에 효율적으로 동작하게 됩니다.</p><ul>
<li>클래스 파일 위치 : ./classes/template/TemplateHandler.class.php</li>
<li>
<p>동작방법</p>
<ul>
<li>인자로 넘겨받은 template_path, template_filename을 이용하여 템플릿 파일을 찾음</li>
<li>해당 템플릿 파일이 있다고 판단되면 컴파일된 파일을 찾음<br>
(컴파일된 파일의 위치 : ./files/cache/template_compiled/{md5(path+filename}.compiled.php)</li>
<li>컴파일된 파일이 없으면 source template file을 읽은후 parsing, 파일로 저장</li>
<li>compiled template file을 include</li>
</ul>
</li>
<li>템플릿 파일로 변수 할당하기
<ul>
<li>템플릿을 지정하기 전에 Context::set('변수이름', $변수) 와 같은 방법으로 context setting을 하게 되면 템플릿에서는 {$변수이름}과 같이 세팅된 변수를 사용할 수 있습니다.</li>
</ul>
</li>
</ul><h3 id="h1274768123257">템플릿 문법</h3><ul>
<li>변수의 내용 출력 및 함수의 결과물 출력 {와 $ 사이의 space character나 개행문자등이 없이 붙어 있어야 합니다.</li>
</ul><div class="code" code_type="xml" editor_component="code_highlighter">{$변수이름} {$변수이름[key]}</div><ul>
<li>함수 또는 변수의 설정 {와 $ 사이에 @ 를 붙이면 결과를 return하지 않습니다. 이 특징을 이용해서 변수설정이나 함수의 실행, php코드 사용을 할 수 있습니다.</li>
</ul><div class="code" code_type="xml" editor_component="code_highlighter">{@ $a = 1}<br>
{@ print $a}</div><ul><li>조건절의 사용 (if)</li></ul><div class="code" code_type="xml" editor_component="code_highlighter"><!--@if(조건문1)--><br>
...<br>
<!--@elseif(조건문2)-><br>
...<br>
<!--@else--><br>
...<br>
<!--@end--></div><ul>
<li>조건절의 사용 (switch)<br>
이 문법에는 문제가 있으니 사용에 주의해주시기 바랍니다. 개선토록 하겠습니다.</li>
</ul><div class="code" code_type="xml" editor_component="code_highlighter"><!--@switch($var)--><br>
<!--@case('foo')--><br>
...<br>
<!--@break--><br>
<!--@default--><br>
...<br>
<!--@end--></div><p style="margin-left: 2em;">switch문은 아래와 같은 예외적인 문법을 제공합니다.</p><p style="margin-left: 2em;">'@break@case(...)' => 'break; case(...) :'</p><p style="margin-left: 2em;">'@break@default' => 'break; default :'</p><div class="code" code_type="xml" editor_component="code_highlighter"><!--@switch($var)--><br>
<!--@case('foo1')--><br>
...<br>
<!--@break@case('foo2')--><br>
...<br>
<!--@break@default--><br>
...<br>
<!--@end--></div><ul>
<li>foreach, for등의 반복문 사용</li>
</ul><div style="position: relative; z-index: 999; top: 0px; left: 0px; display: block;" class="code" code_type="xml" editor_component="code_highlighter"><!--@foreach($변수 as $key => $val)--><br>
{$key} - {$val}<br>
<!--@end--></div><div class="code" code_type="xml" editor_component="code_highlighter"><!--2for($i= 0; $i < 100; $i++)--><br>
{$i}<br>
<!--@end--></div><ul>
<li>다 른 template 파일 include<br>
template 파일 내에서 다른 template파일을 include할 수 있습니다.<br>
이때 경로를 지정하지 않으면 현재의 template file의 위치에서 찾고 없으면 ROOT부터 찾아나갑니다.</li>
</ul><div class="code" code_type="xml" editor_component="code_highlighter"><!--#include("./include.html")--><br>
<!--#include("./common/tpl/include.html")--></div><ul>
<li>css 파일 import</li>
</ul><blockquote class="citation"><p>css 파일을 사용하고자 할 때 아래 문법을 이용하면 html 태그의 <head> .. </head> 사이에 link code가 추가됩니다.
이 때 경로를 지정하지 않으면 현재의 template file의 위치에서 찾고, 없으면 ROOT부터 찾아나갑니다.</p></blockquote><div class="code" code_type="xml" editor_component="code_highlighter"><!--%import("./css/style.css")--></div><ul>
<li>자바스크립트 파일의 import</li>
</ul><blockquote class="citation"><p>자바스크립트 파일을 사용하고자 할때 아래 문법을 이용하면 html 태그의 <head> .. </head> 사이에 <script type="text/javascript" src="자바스크립트파일"></script> 코드가 추가됩니다.
이때 경로를 지정하지 않으면 현재의 template file의 위치에서 찾고 없으면 ROOT부터 찾아나갑니다.</p></blockquote><div class="code" code_type="xml" editor_component="code_highlighter"><!--%import("./js/test.js")--></div><ul><li>xml js filter 파일의 import</li></ul><blockquote class="citation"><p>xml js filter를 사용하고자 할 때 아래 문법을 이용하면 지정된 필터를 컴파일하고 해당 문서에 필터를 적용하게 됩니다.
이 때 경로를 지정하지 않으면 현재의 template file의 위치에서 찾고 없으면 ROOT부터 찾아나갑니다.</p></blockquote><div class="code" code_type="xml" editor_component="code_highlighter"><!--%import("./filter/text.xml")--></div><ul>
<li>
<p>주석<br>
HTML에 출력하지 않도록 감출 수 있습니다.</p>
<ol class="code">
<li><!--// HTML에 출력되지 않는 주석 --></li>
</ol>
</li>
</ul><ul>
<li>기타 경로에 대한 처리 template에서 이미지 태그의 src값이 <span class="ext-link">http://</span> 나 / 로 시작하지 않는다면 해당 템플릿이 요청된 path에서 찾도록 합니다. 작업PC에서 스킨등의 작업을 하고 그대로 서버에 올리면서 테스트하실 수 있습니다.</li>
</ul>
|
SMaker |
2010.05.25 15:32:15 |
|
|
|
Restore
<h3 id="h1274768123255">Template Handler</h3><p><a href="http://doc.zeroboard.com/classTemplateHandler.html" title="http://doc.zeroboard.com/classTemplateHandler.html" class="external">http://doc.xpressengine.com/classTemplateHandler.html</a> (class 구조)</p><p>XE는 몇 가지 특별한 기능을 사용하기 위해서 자체 Template 엔진을 이용합니다.<br>
smarty등의 Template 엔진처럼 정해진 문법으로 작성된 템플릿 파일을 PHP 파일로 컴파일 후에 include만 하기 때문에 효율적으로 동작하게 됩니다.</p><ul>
<li>클래스 파일 위치 : ./classes/template/TemplateHandler.class.php</li>
<li>
<p>동작방법</p>
<ul>
<li>인자로 넘겨받은 template_path, template_filename을 이용하여 템플릿 파일을 찾음</li>
<li>해당 템플릿 파일이 있다고 판단되면 컴파일된 파일을 찾음<br>
(컴파일된 파일의 위치 : ./files/cache/template_compiled/{md5(path+filename}.compiled.php)</li>
<li>컴파일된 파일이 없으면 source template file을 읽은후 parsing, 파일로 저장</li>
<li>compiled template file을 include</li>
</ul>
</li>
<li>템플릿 파일로 변수 할당하기
<ul>
<li>템플릿을 지정하기 전에 Context::set('변수이름', $변수) 와 같은 방법으로 context setting을 하게 되면 템플릿에서는 {$변수이름}과 같이 세팅된 변수를 사용할 수 있습니다.</li>
</ul>
</li>
</ul><h3 id="h1274768123257">템플릿 문법</h3><ul>
<li>변수의 내용 출력 및 함수의 결과물 출력 {와 $ 사이의 space character나 개행문자등이 없이 붙어 있어야 합니다.</li>
</ul><div class="code" code_type="xml" editor_component="code_highlighter">{$변수이름} {$변수이름[key]}</div><ul>
<li>함수 또는 변수의 설정 {와 $ 사이에 @ 를 붙이면 결과를 return하지 않습니다. 이 특징을 이용해서 변수설정이나 함수의 실행, php코드 사용을 할 수 있습니다.</li>
</ul><div class="code" code_type="xml" editor_component="code_highlighter">{@ $a = 1}<br>
{@ print $a}</div><ul><li>조건절의 사용 (if)</li></ul><div class="code" code_type="xml" editor_component="code_highlighter"><!--@if(조건문1)--><br>
...<br>
<!--@elseif(조건문2)-><br>
...<br>
<!--@else--><br>
...<br>
<!--@end--></div><ul>
<li>조건절의 사용 (switch)<br>
이 문법에는 문제가 있으니 사용에 주의해주시기 바랍니다. 개선토록 하겠습니다.</li>
</ul><div class="code" code_type="xml" editor_component="code_highlighter"><!--@switch($var)--><br>
<!--@case('foo')--><br>
...<br>
<!--@break--><br>
<!--@default--><br>
...<br>
<!--@end--></div><p style="margin-left: 2em;">switch문은 아래와 같은 예외적인 문법을 제공합니다.</p><p style="margin-left: 2em;">'@break@case(...)' => 'break; case(...) :'</p><p style="margin-left: 2em;">'@break@default' => 'break; default :'</p><div class="code" code_type="xml" editor_component="code_highlighter"><!--@switch($var)--><br>
<!--@case('foo1')--><br>
...<br>
<!--@break@case('foo2')--><br>
...<br>
<!--@break@default--><br>
...<br>
<!--@end--></div><ul>
<li>foreach, for등의 반복문 사용</li>
</ul><div style="position: relative; z-index: 999; top: 0px; left: 0px; display: block;" class="code" code_type="xml" editor_component="code_highlighter"><!--@foreach($변수 as $key => $val)--><br>
{$key} - {$val}<br>
<!--@end--></div><div class="code" code_type="xml" editor_component="code_highlighter"><!--2for($i= 0; $i < 100; $i++)--><br>
{$i}<br>
<!--@end--></div><ul>
<li>다 른 template 파일 include<br>
template 파일 내에서 다른 template파일을 include할 수 있습니다.<br>
이때 경로를 지정하지 않으면 현재의 template file의 위치에서 찾고 없으면 ROOT부터 찾아나갑니다.</li>
</ul><div class="code" code_type="xml" editor_component="code_highlighter"><!--#include("./include.html")--><br>
<!--#include("./common/tpl/include.html")--></div><ul>
<li>css 파일 import</li>
</ul><blockquote class="citation"><p>css 파일을 사용하고자 할 때 아래 문법을 이용하면 html 태그의 <head> .. </head> 사이에 link code가 추가됩니다.
이 때 경로를 지정하지 않으면 현재의 template file의 위치에서 찾고, 없으면 ROOT부터 찾아나갑니다.</p></blockquote><div class="code" code_type="xml" editor_component="code_highlighter"><!--%import("./css/style.css")--></div><ul>
<li>자바스크립트 파일의 import</li>
</ul><blockquote class="citation"><p>자바스크립트 파일을 사용하고자 할때 아래 문법을 이용하면 html 태그의 <head> .. </head> 사이에 <script type="text/javascript" src="자바스크립트파일"></script> 코드가 추가됩니다.
이때 경로를 지정하지 않으면 현재의 template file의 위치에서 찾고 없으면 ROOT부터 찾아나갑니다.</p></blockquote><div class="code" code_type="xml" editor_component="code_highlighter"><!--%import("./js/test.js")--></div><ul><li>xml js filter 파일의 import</li></ul><blockquote class="citation"><p>xml js filter를 사용하고자 할 때 아래 문법을 이용하면 지정된 필터를 컴파일하고 해당 문서에 필터를 적용하게 됩니다.
이 때 경로를 지정하지 않으면 현재의 template file의 위치에서 찾고 없으면 ROOT부터 찾아나갑니다.</p></blockquote><div class="code" code_type="xml" editor_component="code_highlighter"><!--%import("./filter/text.xml")--></div><ul>
<li>
<p>주석<br>
HTML에 출력하지 않도록 감출 수 있습니다.</p>
<ol class="code">
<li><!--// HTML에 출력되지 않는 주석 --></li>
</ol>
</li>
</ul><ul>
<li>기타 경로에 대한 처리 template에서 이미지 태그의 src값이 <span class="ext-link">http://</span> 나 / 로 시작하지 않는다면 해당 템플릿이 요청된 path에서 찾도록 합니다. 작업PC에서 스킨등의 작업을 하고 그대로 서버에 올리면서 테스트하실 수 있습니다.</li>
</ul>
|
SMaker |
2010.05.25 15:30:19 |
|
|
|
Restore
<h3 id="h1274768123255">Template Handler</h3><p><a href="http://doc.zeroboard.com/classTemplateHandler.html" title="http://doc.zeroboard.com/classTemplateHandler.html" class="external">http://doc.xpressengine.com/classTemplateHandler.html</a> (class 구조)</p><p>XE는 몇 가지 특별한 기능을 사용하기 위해서 자체 Template 엔진을 이용합니다.<br>
smarty등의 Template 엔진처럼 정해진 문법으로 작성된 템플릿 파일을 PHP 파일로 컴파일 후에 include만 하기 때문에 효율적으로 동작하게 됩니다.</p><ul>
<li>클래스 파일 위치 : ./classes/template/TemplateHandler.class.php</li>
<li>
<p>동작방법</p>
<ul>
<li>인자로 넘겨받은 template_path, template_filename을 이용하여 템플릿 파일을 찾음</li>
<li>해당 템플릿 파일이 있다고 판단되면 컴파일된 파일을 찾음<br>
(컴파일된 파일의 위치 : ./files/cache/template_compiled/{md5(path+filename}.compiled.php)</li>
<li>컴파일된 파일이 없으면 source template file을 읽은후 parsing, 파일로 저장</li>
<li>compiled template file을 include</li>
</ul>
</li>
<li>템플릿 파일로 변수 할당하기
<ul>
<li>템플릿을 지정하기 전에 Context::set('변수이름', $변수) 와 같은 방법으로 context setting을 하게 되면 템플릿에서는 {$변수이름}과 같이 세팅된 변수를 사용할 수 있습니다.</li>
</ul>
</li>
</ul><h3 id="h1274768123257">템플릿 문법</h3><ul>
<li>
<p>변수의 내용 출력 및 함수의 결과물 출력<br>
{와 $ 사이의 space character나 개행문자등이 없이 붙어 있어야 합니다.</p>
<ol class="code">
<li>{$변수이름}<br>
{$변수이름[key]}</li>
</ol>
</li>
</ul><ul>
<li>
<p>함수 또는 변수의 설정<br>
{와 $ 사이에 @ 를 붙이면 결과를 return하지 않습니다.<br>
이 특징을 이용해서 변수설정이나 함수의 실행, php코드 사용을 할 수 있습니다.</p>
<ol class="code">
<li>{@ $a = 1}<br>
{@ print $a}</li>
</ol>
<p> </p>
</li>
<li>
<p>조건절의 사용 (if)</p>
<ol class="code">
<li><!--@if(조건문)--><br>
...<br>
<!--@elseif--><br>
...</li>
<li><!--@else--></li>
<li>...<br>
<!--@end--></li>
</ol>
</li>
</ul><ul>
<li>조건절의 사용 (switch)<br>
이 문법에는 문제가 있으니 사용에 주의해주시기 바랍니다. 개선토록 하겠습니다.</li>
</ul><ol class="code" style="margin-left: 2em;">
<li>
<p style="margin-left: 2em;"><!--@switch($var)--></p>
</li>
<li>
<p style="margin-left: 2em;"><!--@case('foo')--></p>
</li>
<li>
<p style="margin-left: 2em;">...</p>
</li>
<li>
<p style="margin-left: 2em;"><!--@break--></p>
</li>
<li>
<p style="margin-left: 2em;"><!--@default--></p>
</li>
<li>
<p style="margin-left: 2em;">...</p>
</li>
<li>
<p style="margin-left: 2em;"><!--@end--></p>
</li>
</ol><p style="margin-left: 2em;">switch문은 아래와 같은 예외적인 문법을 제공합니다.</p><p style="margin-left: 2em;">'@break@case(...)' => 'break; case(...) :'</p><p style="margin-left: 2em;">'@break@default' => 'break; default :'</p><ol class="code" style="margin-left: 2em;">
<li>
<p style="margin-left: 2em;"><!--@switch($var)--><br>
<!--@case('foo1')--><br>
...<br>
<!--@break@case('foo2')--></p>
<p style="margin-left: 2em;">...<br>
<!--@break@default--><br>
...<br>
<!--@end--></p>
</li>
</ol><ul>
<li>
<p>foreach, for등의 반복문 사용</p>
<ol class="code">
<li><!--@foreach($변수 as $key => $val)--><br>
{$key} - {$val}<br>
<!--@end--></li>
<li><br>
<!--@for($i = 0; $i < 100; $i++)--><br>
{$i}<br>
<!--@end--></li>
</ol>
</li>
</ul><ul>
<li>다 른 template 파일 include<br>
template 파일 내에서 다른 template파일을 include할 수 있습니다.<br>
이때 경로를 지정하지 않으면 현재의 template file의 위치에서 찾고 없으면 ROOT부터 찾아나갑니다.</li>
</ul><ol class="code" style="margin-left: 2em;">
<li><!--#include("./include.html")--><br>
<!--#include("./common/tpl/include.html")--></li>
</ol><ul>
<li>
<p>css 파일 import<br>
css파일을 사용하고자 할때 아래 문법을 이용하면 html 태그의 <head> .. </head> 사이에 link code가 추가 됩니다.<br>
이때 경로를 지정하지 않으면 현재의 template file의 위치에서 찾고 없으면 ROOT부터 찾아나갑니다.</p>
<ol class="code">
<li><!--%import("./css/style.css")--></li>
</ol>
</li>
</ul><ul>
<li>
<p>js 파일의 import<br>
js파일을 사용하고자 할때 아래 문법을 이용하면 html 태그의 <head> .. </head> 사이에 <script type="text/javascript" src="js파일"></script> 코드가 추가됩니다. 이때 경로를 지정하지 않으면 현재의 template file의 위치에서 찾고 없으면 ROOT부터 찾아나갑니다.</p>
<ol class="code">
<li><!--%import("./js/test.js")--></li>
</ol>
<p> </p>
</li>
<li>
<p>xml js filter파일의 import<br>
xml js filter를 사용하고자 할때 아래 문법을 이용하면 지정된 필터를 컴파일하고 해당 문서에 필터를 적용하게 됩니다.<br>
이때 경로를 지정하지 않으면 현재의 template file의 위치에서 찾고 없으면 ROOT부터 찾아나갑니다.</p>
<ol class="code">
<li><!--%import("./filter/test.xml")--></li>
</ol>
</li>
</ul><ul>
<li>
<p>주석<br>
HTML에 출력하지 않도록 감출 수 있습니다.</p>
<ol class="code">
<li><!--// HTML에 출력되지 않는 주석 --></li>
</ol>
</li>
</ul><ul>
<li>기타 경로에 대한 처리 template에서 이미지 태그의 src값이 <span class="ext-link">http://</span> 나 / 로 시작하지 않는다면 해당 템플릿이 요청된 path에서 찾도록 합니다. 작업PC에서 스킨등의 작업을 하고 그대로 서버에 올리면서 테스트하실 수 있습니다.</li>
</ul>
|
SMaker |
2010.05.25 15:17:25 |
|
|
|
Restore
<h3>Template Handler</h3>
<p><a href="http://doc.zeroboard.com/classTemplateHandler.html" title="http://doc.zeroboard.com/classTemplateHandler.html" class="external">http://doc.zeroboard.com/classTemplateHandler.html</a> (class 구조)</p>
<p> </p>
<p>XE는 몇 가지 특별한 기능을 사용하기 위해서 자체 Template 엔진을 이용합니다.<br />
smarty등의 Template 엔진처럼 정해진 문법으로 작성된 템플릿 파일을 PHP 파일로 컴파일 후에 include만 하기 때문에 효율적으로 동작하게 됩니다.</p>
<p> </p>
<ul>
<li>클래스 파일 위치 : ./classes/template/TemplateHandler.class.php</li>
<li>
<p>동작방법</p>
<ul>
<li>인자로 넘겨받은 template_path, template_filename을 이용하여 템플릿 파일을 찾음</li>
<li>해당 템플릿 파일이 있다고 판단되면 컴파일된 파일을 찾음<br />
(컴파일된 파일의 위치 : ./files/cache/template_compiled/{md5(path+filename}.compiled.php)</li>
<li>컴파일된 파일이 없으면 source template file을 읽은후 parsing, 파일로 저장</li>
<li>compiled template file을 include</li>
</ul>
</li>
<li>템플릿 파일로 변수 할당하기
<ul>
<li>템플릿을 지정하기 전에 Context::set('변수이름', $변수) 와 같은 방법으로 context setting을 하게 되면 템플릿에서는 {$변수이름}과 같이 세팅된 변수를 사용할 수 있습니다.</li>
</ul>
</li>
</ul>
<p> </p>
<h3>템플릿 문법</h3>
<ul>
<li>
<p>변수의 내용 출력 및 함수의 결과물 출력<br />
{와 $ 사이의 space character나 개행문자등이 없이 붙어 있어야 합니다.</p>
<ol class="code">
<li>{$변수이름}<br />
{$변수이름[key]}</li>
</ol>
</li>
</ul>
<p> </p>
<ul>
<li>
<p>함수 또는 변수의 설정<br />
{와 $ 사이에 @ 를 붙이면 결과를 return하지 않습니다.<br />
이 특징을 이용해서 변수설정이나 함수의 실행, php코드 사용을 할 수 있습니다.</p>
<ol class="code">
<li>{@ $a = 1}<br />
{@ print $a}</li>
</ol>
<p> </p>
</li>
<li>
<p>조건절의 사용 (if)</p>
<ol class="code">
<li><!--@if(조건문)--><br />
...<br />
<!--@elseif--><br />
...</li>
<li><!--@else--></li>
<li>...<br />
<!--@end--></li>
</ol>
</li>
</ul>
<p> </p>
<ul>
<li>조건절의 사용 (switch)<br />
이 문법에는 문제가 있으니 사용에 주의해주시기 바랍니다. 개선토록 하겠습니다.</li>
</ul>
<ol class="code" style="margin-left: 2em;">
<li>
<p style="margin-left: 2em;"><!--@switch($var)--></p>
</li>
<li>
<p style="margin-left: 2em;"><!--@case('foo')--></p>
</li>
<li>
<p style="margin-left: 2em;">...</p>
</li>
<li>
<p style="margin-left: 2em;"><!--@break--></p>
</li>
<li>
<p style="margin-left: 2em;"><!--@default--></p>
</li>
<li>
<p style="margin-left: 2em;">...</p>
</li>
<li>
<p style="margin-left: 2em;"><!--@end--></p>
</li>
</ol>
<p> </p>
<p style="margin-left: 2em;">switch문은 아래와 같은 예외적인 문법을 제공합니다.</p>
<p style="margin-left: 2em;">'@break@case(...)' => 'break; case(...) :'</p>
<p style="margin-left: 2em;">'@break@default' => 'break; default :'</p>
<ol class="code" style="margin-left: 2em;">
<li>
<p style="margin-left: 2em;"><!--@switch($var)--><br />
<!--@case('foo1')--><br />
...<br />
<!--@break@case('foo2')--></p>
<p style="margin-left: 2em;">...<br />
<!--@break@default--><br />
...<br />
<!--@end--></p>
</li>
</ol>
<p> </p>
<ul>
<li>
<p>foreach, for등의 반복문 사용</p>
<ol class="code">
<li><!--@foreach($변수 as $key => $val)--><br />
{$key} - {$val}<br />
<!--@end--></li>
<li><br />
<!--@for($i = 0; $i < 100; $i++)--><br />
{$i}<br />
<!--@end--></li>
</ol>
</li>
</ul>
<p> </p>
<ul>
<li>다 른 template 파일 include<br />
template 파일 내에서 다른 template파일을 include할 수 있습니다.<br />
이때 경로를 지정하지 않으면 현재의 template file의 위치에서 찾고 없으면 ROOT부터 찾아나갑니다.</li>
</ul>
<ol class="code" style="margin-left: 2em;">
<li><!--#include("./include.html")--><br />
<!--#include("./common/tpl/include.html")--></li>
</ol>
<p> </p>
<ul>
<li>
<p>css 파일 import<br />
css파일을 사용하고자 할때 아래 문법을 이용하면 html 태그의 <head> .. </head> 사이에 link code가 추가 됩니다.<br />
이때 경로를 지정하지 않으면 현재의 template file의 위치에서 찾고 없으면 ROOT부터 찾아나갑니다.</p>
<ol class="code">
<li><!--%import("./css/style.css")--></li>
</ol>
</li>
</ul>
<p> </p>
<ul>
<li>
<p>js 파일의 import<br />
js파일을 사용하고자 할때 아래 문법을 이용하면 html 태그의 <head> .. </head> 사이에 <script type="text/javascript" src="js파일"></script> 코드가 추가됩니다. 이때 경로를 지정하지 않으면 현재의 template file의 위치에서 찾고 없으면 ROOT부터 찾아나갑니다.</p>
<ol class="code">
<li><!--%import("./js/test.js")--></li>
</ol>
<p> </p>
</li>
<li>
<p>xml js filter파일의 import<br />
xml js filter를 사용하고자 할때 아래 문법을 이용하면 지정된 필터를 컴파일하고 해당 문서에 필터를 적용하게 됩니다.<br />
이때 경로를 지정하지 않으면 현재의 template file의 위치에서 찾고 없으면 ROOT부터 찾아나갑니다.</p>
<ol class="code">
<li><!--%import("./filter/test.xml")--></li>
</ol>
</li>
</ul>
<p> </p>
<ul>
<li>
<p>주석<br />
HTML에 출력하지 않도록 감출 수 있습니다.</p>
<ol class="code">
<li><!--// HTML에 출력되지 않는 주석 --></li>
</ol>
</li>
</ul>
<p> </p>
<ul>
<li>기타 경로에 대한 처리 template에서 이미지 태그의 src값이 <span class="ext-link">http://</span> 나 / 로 시작하지 않는다면 해당 템플릿이 요청된 path에서 찾도록 합니다. 작업PC에서 스킨등의 작업을 하고 그대로 서버에 올리면서 테스트하실 수 있습니다.</li>
</ul>
<p> </p>
<p> </p>
|
|
2009.07.27 14:23:11 |