https://web.archive.org/web/20161102003229/http://www.xeschool.com/xe/xenote_template_syntax_if

XE Template Syntax

주어진 조건에 따라 필요한 내용을 문맥에 알맞게 출력하거나 배제할 때 조건문을 사용한다.

1. IF 문

IF 조건문은 PHP의 IF 조건문과 동일하고 "if, elseif, else, end"와 "조건식"으로 이루어져 있다. if 문이 시작되면 반드시 end 문으로 닫아서 조건문이 끝났음을 선언해야 하고 조건식의 내용은 PHP문으로 해석되기 때문에 PHP에서 사용 가능한 여러 가지 연산자(&&, ||, ==, ! 등)의 사용이 가능하다.

[작성 문법]

<!--@if($a==1)--> // 조건식1이 참(TRUE)이면 포함된 내용을 실행
   <p>Welcome XE!</p>
<!--@elseif($a==2)--> // 조건식1이 거짓(FALSE)이고 조건식 2가 참(TRUE)이면 포함된 내용 실행 
    <p>Welcome XpressEngine!</p>
<!--@else--> // 조건식 1,2가 모두 거짓(FALSE)이면 포함된 내용 실행
    <p>Welcome XEschool!</p>
<!--@end-->

XE 템플릿 스킨 등에서 작성된 IF 조건문은 PHP문으로 해석되어 다음과 같이 출력된다.

compile...

위와 같이 PHP문과 HTML 태그가 분리된 형식을 회피(Escaping in PHP) 구문이라고 한다. XML이나 XHTML 안에 PHP 코드를 내장시키려면 XML과 호환될 수 있도록 <?php ... ?> 형을 써야 한다. 약식 출력(<?=...?>) 또는 짧은 태그(<?...?>)를 사용하면 XHTML 문서에서는 오류가 발생한다. 따라서 XE 템플릿 문법에서 <!--@ ... --> 의 사용은 항상 PHP문으로 해석할 때 <?php ... ?>를 포함하게 되는 것이다. 그러면 HTML 표준에 따른 주석 <!-- ... -->문은 어떻게 될까? 너무 걱정하지 않아도 된다. <!-- ... -->과 <!-- // ... --> 모두 앳 기호(@)가 없기 때문에 주석문으로 계속 사용이 가능하다. 별걱정 다한다...^^

<!--@if($is_logged)--> 
   <h2>당신은 로그인하셨습니다!</h2>
<!--@else--> 
   <h2>당신은 로그인하지 않으셨습니다!</h2>
<!--@end-->

결과값 :

당신은 로그인하지 않으셨습니다!

IF문 안에 또 다른 IF문도 포함(중첩)시킬 수 있다. 모든 HTML 태그의 사용도 가능하다. HTML 문서 안에서 보여주거나 보이지 말아야 할 내용을 동적으로 제어하기 위해 PHP 코드(code)를 분리한 것이 바로 XE 템플릿 문법이다. 대단히 복잡하게 보일 수 있는 코딩을 무척 간결하면서도 판독이 쉽도록 문법화 되어 있다. 다만 문법이기 때문에 한 글자라도 틀리면 오류가 발생한다...^^

IF문에서의 조건식 안에는 일반 변수를 이용한 조건식 뿐만 아니라 모든 "XE core 변수"를 이용한 조건식도 가능하다. 만약 로그인 여부에 따른 조건식을 꾸미면 다음과 같다. 만약 로그인 회원의 회원정보에서 홈페이지가 있는 경우 홈페이지 주소를 출력해 보자!

<!--@if($is_logged)-->
   <!--@if($logged_info->homepage)-->
      <h3>홈페이지 : {$logged_info->homepage}</h3>
   <!--@else-->
      <h3>아직 홈페이지가 없으시군요!</h3>
   <!--@end-->
<!--@else-->
   <h3>당신은 로그인하지 않으셨습니다! 로그인해 주세요!</h3>
<!--@end-->

결과값 :

당신은 로그인하지 않으셨습니다! 로그인해 주세요!

위와 같이 IF문 안에 작성된 코드 블록 영역은 조건식에 의한 결과값에 따라 출력 여부를 결정한다.