회원에게 공개되는 공간입니다. 올려진 팁이나 자료가 절대적으로 옳은 방법은 아닙니다. 다양한 방법중 하나의 방법임을 이해해 주시기 바라며, 보다 나은 방법이 있거나 궁금한 사항이 있으시면 댓글로 참여해 주시면 감사하겠습니다.

layout 파일에서 인클루드 사용하기(템플릿문법)

조회 수 619 추천 수 0 2009.05.04 15:46:43

XE의 스킨은 zb4와 다르게 PHP로 다시 변환되는 특수한 템플릿 언어를 사용합니다. 따라서 스킨을 제작하면서 자신이 원하는 내용을 넣기 위해 본 내용을 숙지해야 합니다.

 

변수#

변수는 PHP와 동일하게 사용되며, XE 내부에서 사용되는 여러가지 변수를 그대로 이용할 수 있습니다. 단, 출력시에는 {...}문을 사용합니다.

 

  1. {$document_srl}

 

위의 문장은 $document_srl이라는 변수를 출력하도록 만듭니다. 아울러 여러가지 출력함수를 매칭시켜 화면출력을 시킬 수도 있습니다.

 

  1. {$oDocument->getTitleText()}

 

그러나 {...}안에 출력될 수 없는 문장등을 기재하면 안됩니다.

 

각 스킨별로 어떤 변수를 쓸수 있는지에 대해서 미리 이해하는 것이 필요하기 때문에 배포본에 함께 동봉된 다른 스킨들이 어떤 변수를 쓰고 있는지 숙지하시기 바랍니다.

 

제어문#

스킨에 간단한 제어문을 사용할 수 있습니다.

 

조건문#

 

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

 

위의 문장등을 이용하여 조건에 맞추어 스킨 출력을 제어합니다. 조건문에 의한 실행 블록(block)을 정의하기 위하여 반드시

 

  1. <!--@end-->

 

위와 같이 end문을 반드시 기입해야 합니다. 예를 들어 newest_document 위젯의 스킨에서 다음과 같은 조건문 처리가 가능합니다.

 

  1. <!--@if(count($widget_info->document_list) > 0)-->
  2.      .... 문서정보 출력...
  3. <!--@else-->
  4.      최근 문서가 없습니다.
  5. <!--@end-->

 

조건식(Condition Expression)안의 내용은 PHP로 곧바로 해석되기 때문에 PHP에서 가능한 여러가지 연산자를 쓸 수 있습니다.

 

  1. <!--@if($logged_info && $logged_info->is_admin)-->

 

위의 조건문은 스킨에서 현재 유저가 로긴을 했는지, 그리고 관리자인지 검사하는 것을 보입니다.

 

반복문#

 

배열등을 처리하기 위하여 foreach문장을 사용할 수 있습니다. 반복문 역시 end로 해당 블록을 반드시 명시해야 합니다.

 

  1. <!--@foreach($widget_info->document_list as $oDocument)-->
  2. <!--@end-->

 

foreach의 조건식 역시 PHP의 foreach에 사용되는 것과 동일하게 해석되므로, Key와 Value를 분리하기 위해 다음과 같이 쓸 수도 있습니다.

 

  1. <!--@foreach($widget_info->document_list as $key => $oDocument)-->
  2. <!--@end-->

 

 

간단한 PHP문 사용#

 

템플릿 파일에서 {@...}문을 이용하면 간단한 PHP문장을 해석하도록 해줍니다. 예를 들어,

 

  1. {@$is_logged=Context::get('is_logged')}

 

위와 같이 사용할 수 있습니다.(예문은 현재 로그인했는지 확인하는 XE 기본 문항을 스킨에 쓸수 있도록 해준 것입니다.

그러나 {@...}을 사용할때 안에 들어가는 것은 한문장으로 해석가능한 완전한 PHP문이어야 합니다. 예를 들어,

 

  1. {@$test = 364; $test=$test*$test}

 

위와 같이 PHP상에선 별 문제없어보이는 식이지만 이미 하나의 문장이 아니기 때문에 에러를 일으킵니다.(사이트가 보이지 않는 등의 치명적인 문제를 일으키기도 합니다.)

 

※ 내부적으로 {@...}안의 문장은 PHP의 eval() 함수를 이용하여 파싱됩니다.

 

 

파일의 분할#

 

공통적으로 사용되는 템플릿 파일들을 나누어 관리할 수 있습니다.

 

  1. <!--#include('파일경로')-->
  2. <!--#include("파일경로")-->

 

주의: 위의 include문은 php의 include와 다르게 작동됩니다. 어디까지나 분할된 템플릿 파일을 include한다는 사실에 유의하십시오. 일반 PHP 파일은 include 해도 PHP로 해석되지 않습니다.

 

 

CSS/자바스크립트와의 연결#

 

CSS나 자바스크립트를 사용하기 위하여 다음과 같이 <!--%import(경로)-->문법을 이용합니다.

 

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

 

위의 예제는 js/blog.js파일을 현재의 스킨과 연결시키기 위해 사용된 문장입니다. 한편으로 이 문장은

 

  1. {@Context::addJsFile("js/blog.js")}

 

과 동일한 실행결과를 가집니다.

 

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

 

위의 예제는 css/common.css파일을 현재의 스킨과 연결시키기 위해 사용된 문장입니다. 한편으로 이 문장은

 

  1. {@Context::addCSSFile("css/common.css")}

 

과 동일한 실행결과를 가집니다.

 

주의: 이렇게 import된 JS파일은 선언된 위치와 상관없이 HTML의 <HEAD>안에 자동으로 삽입됩니다

문서 첨부 제한 : 0Byte/ 5368709120.00MB
파일 제한 크기 : 2.00MB (허용 확장자 : *.*)
List of Articles
번호 제목 글쓴이 날짜 조회 수
179 XE에서 브라우저 타이틀 일괄 변경 [레벨:30]똑띠 2009-05-22 522
178 게시판 본문(view_document)에 확장변수값 마음대로 출력하기 [2] [레벨:30]똑띠 2009-05-21 598
177 팝업창 코드로 띄우기 imagefile [레벨:30]똑띠 2009-05-04 548
» layout 파일에서 인클루드 사용하기(템플릿문법) [레벨:30]똑띠 2009-05-04 619
175 팝업창 모듈 / 위젯 file [레벨:30]똑띠 2009-04-26 612
174 게시판 본문에 특정확장변수 불러내기 [레벨:30]똑띠 2009-04-24 468
173 레이아웃에 플래시 소스 넣기 [1] [레벨:30]똑띠 2009-04-22 733
172 특정기간동안 특정 그룹이 작성한 게시글 검색 쿼리문 [레벨:30]똑띠 2009-04-22 594
171 게시글 본문 밑에 리스트 출력하지 않으려면 [레벨:30]똑띠 2009-04-21 443
170 하이퍼링크에 테두리 한방에 없애기 [레벨:30]똑띠 2009-04-08 501
169 최신글 위젯에 공지사항이 나올때.... [레벨:30]똑띠 2009-03-28 460
168 팝업창 클릭시 부모창에서 내용보여주고 팝업창 닫기 [레벨:30]똑띠 2009-03-23 659
167 faceOff 확장변수 마음대로 정렬하기 [레벨:30]똑띠 2009-03-10 475
166 리눅스 계정 - svn으로 최신버전 받기 [2] [레벨:30]똑띠 2009-03-09 662
165 플래닛에서 텍스트에 링크 거는 방법 [레벨:30]똑띠 2009-03-07 508
164 게시판 확장변수 부분 소스 분석 [레벨:30]똑띠 2009-01-30 507
163 회원정보(mypage) member_option 부분 숨김처리 imagefile [레벨:30]똑띠 2009-01-28 481
162 댓글위젯에 날짜 출력과 New 아이콘 출력 [레벨:30]똑띠 2009-01-23 463
161 zb4 -> XE 로 데이터 이전시 사이트링크값(zb4)을 확장변수(XE)에 넣기 [레벨:30]똑띠 2009-01-18 579
160 확장변수 타입에 홈페이지 형식 부분에 http:// 기본으로 넣어두기 [레벨:30]똑띠 2009-01-18 449