자주자주 공지를 확인하세요!

라이믹스/매뉴얼/템플릿 문법 v1

Gaon12 (토론 / 기여)님의 2026년 10월 17일 (토) 09:20 판 (주제별 분류 적용: 테마와 템플릿; 상위 분류 중복 정리)
(차이) ← 이전 판 / 최신판 (차이) / 다음 판 → (차이)

상위 문서: 라이믹스/매뉴얼

개요

XE 1.x에서 이어진 라이믹스 템플릿 문법이다. HTML 태그·속성·주석 형태로 출력과 흐름 제어를 작성한다. 기존 자료와의 호환성을 위해 계속 지원하지만, 공식 매뉴얼은 라이믹스 2.2 이상을 대상으로 새 자료를 만들 때 v2를 권장한다.

데이터 출력과 변수

한 쌍의 중괄호 안에 변수나 PHP 표현식을 쓴다. 여는 중괄호 바로 다음의 공백이나 표현식 중간의 줄바꿈은 인식을 방해한다.

{$name}
{$oDocument->getTitleText()}
{$array[$key]}

일반 템플릿 변수는 Context를 통해 읽고 저장한다. 모듈에서 Context::set('name', $value)로 전달한 값을 템플릿의 $name으로 사용할 수 있다. 여러 자료가 같은 범위를 공유하므로 이름 충돌과 의도하지 않은 변경에 주의한다. 초전역변수와 $this는 예외이다.

출력 필터와 이스케이프

|로 필터를 연결하고 :로 옵션을 전달한다.

{$name|lower|escape}
{$timestamp|date:'Y-m-d H:i'}
필터 기능
autoescape / autolang 이중 인코딩 없이 이스케이프. autolang은 언어코드를 별도 취급
escape / escapejs 강제 HTML 이스케이프 / JS 문자열용 이스케이프
noescape / json 이스케이프 해제 / JSON 변환
strip / strip_tags / trim 태그 제거 / 앞뒤 공백 제거
urlencode / lower / upper URL 인코딩 / 소문자 / 대문자
nl2br / join 개행을 줄바꿈 태그로 변환 / 배열 합치기
date 날짜 포맷, 기본 Y-m-d H:i:s
format / number_format 숫자에 천 단위 구분, 옵션은 소수 자릿수
shorten / number_shorten 숫자를 123.4K 등의 형태로 축약
link 문자열을 링크로 표시

파일 최상단에 아래 설정을 쓰면 뒤에 나오는 출력에 자동 이스케이프를 적용한다. v2의 문맥별 자동 처리와 같다고 가정하지 말고, JS 등 각 출력 위치에 맞는 처리를 확인한다.

<config autoescape="on" />

noescape는 필요한 위치에서만 사용한다. nl2br와 link는 원문 매뉴얼에서 자동으로 noescape가 적용되는 필터로 안내하므로 입력 데이터의 신뢰 범위를 확인한다.

조건문과 반복문

HTML 주석 안에 @if, @foreach 등을 넣는다.

<!--@if($items)-->
    <!--@foreach($items as $item)-->
        <div>{$item->title}</div>
    <!--@endforeach-->
<!--@else-->
    <p>항목이 없습니다.</p>
<!--@endif-->

종료는 <!--@end-->로 줄일 수도 있지만, 종류가 드러나는 종료문이 읽기 쉽다. 일반 태그의 cond·loop 속성과 가상 <block> 태그는 해석상의 문제가 있어 공식 매뉴얼이 사용을 권장하지 않는다.

속성 하나의 표시를 제어하는 |cond=""는 별도 문법이다.

<option value="yes" selected="selected"|cond="$value === 'yes'">예</option>

인클루드

경로는 현재 파일을 기준으로 하고, ^/로 라이믹스 설치 루트를 기준으로 지정할 수도 있다. 확장자 .html은 생략할 수 있다.

<include target="header.html" />
<include target="../notice.html" cond="$show_notice" />
<include target="^/common/tpl/refresh.html" />

리소스 로딩

<load target="style.scss" vars="$vars" />
<load target="print.css" media="print" index="20" />
<load target="script.js" type="body" index="10" />
<load target="./lang" />
<unload target="unused.js" />
  • target: 현재 템플릿 기준 경로. ^/도 사용 가능하다.
  • media: CSS의 출력 매체.
  • index: 로딩 순서.
  • vars: SCSS·LESS에 전달할 연관배열 또는 객체.
  • JS의 type: 기본 head, 본문 뒤에서 실행하려면 body.
  • 언어 파일은 폴더 단위로 불러오며, 언로딩은 로딩할 때와 같은 경로를 쓴다.

코어의 JS 플러그인을 불러오는 옛 문법도 지원한다.

<!--%load_js_plugin("ckeditor")-->

XML JS 필터는 기존 자료와의 호환을 위해 남아 있지만 신규 사용을 권장하지 않는다.

PHP 코드와 주석

{@ $title = '제목'; }
<!--// 출력 결과에 남지 않는 주석 -->

{@ ... } 안의 변수도 Context를 사용한다. 중괄호가 포함된 PHP 코드에 제약이 있으므로 복잡한 로직은 모듈 등으로 옮기는 편이 좋다. 일반 <?php ... ?>의 변수 범위는 다르므로 두 방식을 섞을 때 확인한다. 일반 HTML 주석은 응답에 남는다.

경로와 폼의 자동 처리

템플릿 안의 이미지 등 상대경로는 표시되는 URL에 맞추어 변환된다. srcset은 2.0.3부터 지원한다.

폼에는 현재 화면의 mid, act, error_return_url 등이 자동 추가될 수 있다. 필요한 액션·권한·CSRF 필드는 제작자가 확인해야 하며 자동 주입만을 전제로 구현하지 않는다. 2.0.15 이상에서는 rx-autoform="false"로 전체 자동 주입을 끌 수 있다.

<form action="/search" method="get" rx-autoform="false">
    <input type="search" name="q" value="" />
    <button type="submit">검색</button>
</form>

이 예제의 /search는 실제 검색 경로에 맞게 바꾼다.

같이 보기

출처

최근 바뀜

더 보기