Rhymix/XE 템플릿 문법¶
기본 문법¶
cond (조건문)¶
cond
는 condition의 약자로, 조건에 따라 요소를 표시하거나 숨길 때 사용합니다.
기본 사용법¶
<!-- count($list)가 있으면 표시 -->
<tr cond="count($list)">
<td>리스트가 있습니다</td>
</tr>
<!-- count($list)가 없으면 표시 (느낌표 ! 사용) -->
<tr cond="!count($list)">
<td>리스트가 없습니다</td>
</tr>
loop (반복문)¶
loop
는 배열이나 객체를 반복하여 출력할 때 사용합니다.
기본 사용법¶
<!-- HTML 요소에 직접 사용 -->
<table>
<tr loop="$list=>$item">
<td>{$item->title}</td>
</tr>
</table>
<!-- block 태그 사용 -->
<table>
<block loop="$list=>$item">
<tr>
<td>{$item->title}</td>
</tr>
</block>
</table>
새 템플릿 문법 (XE Core 1.4.4+)¶
XE Core 1.4.4 버전부터 추가된 새로운 템플릿 문법입니다.
장점¶
- 간결함: 스킨의 소스 코드를 약 절반 정도로 줄일 수 있습니다
- 가독성: HTML 태그 기반으로 조건문과 반복문의 시작-끝을 쉽게 파악할 수 있습니다
- 편집기 지원: 코드 접기/펼치기 기능을 지원하는 편집기에서 매우 편리합니다
조건문¶
문법 | 설명 |
---|---|
<block cond="조건식">...</block> |
조건식이 참이면 포함된 내용을 출력 |
<p cond="조건식">...</p> |
조건식이 참이면 <p> 요소와 함께 내용을 출력 |
<p attr="value"│cond="조건식">...</p> |
<p> 요소는 항상 출력하되, 조건식이 참이면 attr="value" 속성 추가 |
예제¶
<!-- block 사용 -->
<block cond="$logged_info">
<p>환영합니다, {$logged_info->nick_name}님!</p>
</block>
<!-- HTML 요소에 직접 사용 -->
<div cond="$is_logged">
<a href="{getUrl('act','dispMemberLogout')}">로그아웃</a>
</div>
<!-- 속성 조건부 출력 -->
<li class="active"│cond="$mid == 'board'">
<a href="{getUrl('mid','board')}">게시판</a>
</li>
반복문¶
문법 | 설명 |
---|---|
<block loop="변수명=>$val">...</block> |
$key 없이 반복 |
<tr loop="변수명=>$val">...</tr> |
$key 없이 요소와 함께 반복 |
<block loop="변수명=>$key,$val">...</block> |
$key 포함하여 반복 |
<tr loop="변수명=>$key,$val">...</tr> |
$key 포함하여 요소와 함께 반복 |
<block loop="$i=0;$i<100;$i++">...</block> |
for문 형식의 반복 |
예제¶
<!-- 기본 반복 -->
<ul>
<li loop="$menu_list=>$menu">
<a href="{$menu->url}">{$menu->text}</a>
</li>
</ul>
<!-- key값 포함 반복 -->
<select>
<option loop="$lang_list=>$key,$val" value="{$key}">{$val}</option>
</select>
<!-- for문 형식 -->
<select name="year">
<option loop="$i=2020;$i<=2030;$i++" value="{$i}">{$i}년</option>
</select>
include문¶
다른 템플릿 파일을 포함할 때 사용합니다.
문법 | 설명 |
---|---|
<include target="header.html" /> |
header.html 파일을 포함 |
예제¶
<include target="header.html" />
<div class="content">
<!-- 콘텐츠 -->
</div>
<include target="footer.html" />
load문¶
CSS, JavaScript, XML 필터 파일을 로드할 때 사용합니다.
문법 | 설명 |
---|---|
<load target="style.css" /> |
CSS 파일을 <head> 에 포함 |
<load target="script.js" /> |
JS 파일을 <head> 에 포함 |
<load target="script.js" type="body" /> |
JS 파일을 <body> 끝에 포함 |
<load target="filter.xml" /> |
XML JS 필터를 포함 |
예제¶
<!-- CSS 로드 -->
<load target="css/style.css" />
<load target="//fonts.googleapis.com/css?family=Noto+Sans+KR" />
<!-- JavaScript 로드 -->
<load target="js/common.js" />
<load target="js/main.js" type="body" />
<!-- 조건부 로드 -->
<load target="css/admin.css" cond="$logged_info->is_admin == 'Y'" />
unload문¶
이미 로드된 파일을 제외할 때 사용합니다.
문법 | 설명 |
---|---|
<unload target="style.css" /> |
경로가 일치하는 CSS 파일 제외 |
<unload target="script.js" /> |
경로가 일치하는 JS 파일 제외 |
예제¶
<!-- 특정 페이지에서 기본 스타일 제외 -->
<unload target="common/css/xe.css" />
<load target="css/custom.css" />
호환성 참고사항¶
- 새 템플릿 문법은 XE Core 1.4.4 이상에서만 작동합니다
- 하위 호환성이 필요한 경우 기존 문법을 사용해야 합니다
- 기존 템플릿 문법도 계속 유효하며 사용 가능합니다
실전 예제¶
게시판 리스트¶
<table cond="$document_list">
<thead>
<tr>
<th>번호</th>
<th>제목</th>
<th>작성자</th>
<th>날짜</th>
</tr>
</thead>
<tbody>
<tr loop="$document_list=>$no,$document">
<td>{$no}</td>
<td><a href="{getUrl('document_srl',$document->document_srl)}">{$document->title}</a></td>
<td>{$document->nick_name}</td>
<td>{$document->regdate}</td>
</tr>
</tbody>
</table>
<div cond="!$document_list" class="no-article">
게시물이 없습니다.
</div>
로그인 폼¶
<div cond="!$is_logged" class="login-form">
<form action="{getUrl('')}" method="post">
<input type="hidden" name="act" value="procMemberLogin" />
<input type="text" name="user_id" placeholder="아이디" />
<input type="password" name="password" placeholder="비밀번호" />
<button type="submit">로그인</button>
</form>
</div>
<div cond="$is_logged" class="logged-info">
<span>{$logged_info->nick_name}님</span>
<a href="{getUrl('act','dispMemberLogout')}">로그아웃</a>
</div>