TemplateSyntax - xpressengine/xe-core GitHub Wiki

Template Syntax

XE ํ…œํ”Œ๋ฆฟ์€ PHP ๋ฌธ๋ฒ•์— ๊ธฐ์ดˆํ•˜๋ฉฐ, ๋ฌธ๋ฒ•์„ ๊ฐ„์†Œํ™”ํ•˜๊ณ  HTML ํƒœ๊ทธ์™€ ์ž˜ ์–ด์šฐ๋Ÿฌ์ง€๋„๋ก ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ๋ฌธ๋ฒ•

XE ํ…œํ”Œ๋ฆฟ์€ ํฌ๊ฒŒ ์„ธ ๊ฐ€์ง€ ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค. ์ค‘๊ด„ํ˜ธ({}), HTML ์ฃผ์„(<!-- -->) ๊ทธ๋ฆฌ๊ณ  HTML ์†์„ฑ์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ค‘๊ด„ํ˜ธ๋Š” ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ์ถœ๋ ฅํ•˜๊ฑฐ๋‚˜ ํ• ๋‹นํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋ฉฐ, HTML ์ฃผ์„ ํ˜•ํƒœ๋Š” if, foreach์™€ ๊ฐ™์€ ์กฐ๊ฑด๋ฌธ์ด๋‚˜ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ์ œ์–ด๋ฌธ ๋“ฑ์€ HTML์˜ ์†์„ฑ์ด๋‚˜ ํƒœ๊ทธ์˜ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉ๋˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

{$var}
{@ $is_logged = true}
<!--@if($is_logged)--> ... <!--@endif-->
<!--@foreach($arr as $val)--> ... <!--@endforeach-->
<div cond="$is_logged"> ... </div>
<load target="./css/style.css" />

์ฃผ์„

HTML ์ฃผ์„๊ณผ ๋™์ผํ•˜์ง€๋งŒ ์›นํŽ˜์ด์ง€์—๋Š” ์ถœ๋ ฅํ•˜๊ณ ์‹ถ์ง€ ์•Š์€ ๋‚ด์šฉ์„ ๋‹ด์„ ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์ถ”๊ณ  ์‹ถ์€ ์ฃผ์„์€ <!--// --> ์ด์ฒ˜๋Ÿผ ์ฃผ์„์„ ์—ฌ๋Š” ๊ตฌ๋ฌธ์— //๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

<!--// ๋กœ๊ทธ์ธ ํผ ์‹œ์ž‘ -->
<form>
  ...
  <!-- ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ -->
  <!--// ํฐ ๋ฒ„ํŠผ์œผ๋กœ ํ‘œ์‹œํ•˜๋ ค๋ฉด 'large' class๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋จ -->
  <button class="btn-login">๋กœ๊ทธ์ธ</button>
</form>
<!--// ๋กœ๊ทธ์ธ ํผ ๋ -->

์œ„ ํ…œํ”Œ๋ฆฟ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด <!--// -->์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐ ํ›„ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

<form>
  ...
  <!-- ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ -->
  <button class="btn-login">๋กœ๊ทธ์ธ</button>
</form>

๋ณ€์ˆ˜

๋ณ€์ˆ˜ ์ถœ๋ ฅ

{$๋ณ€์ˆ˜์ด๋ฆ„}๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ํ…œํ”Œ๋ฆฟ์„ ์ž‘์„ฑํ•˜๋ฉด ๋ณ€์ˆ˜๋ฅผ ํ™”๋ฉด์— ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ, ์ด๋ฆ„์ด ์–ธ๋”์Šค์ฝ”์–ด ๋‘ ๊ฐœ(__)๋‚˜ ์ˆซ์ž, ๊ณต๋ฐฑ, ์–ธ๋”์Šค์ฝ”์–ด ๋ฌธ์ž ์ด์™ธ์˜ ํŠน์ˆ˜ ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ณ€์ˆ˜๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ณ€์ˆ˜ ๋Œ€์‹  ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์„ ์ถœ๋ ฅํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

// ์˜ฌ๋ฐ”๋ฆ„
{$varname}
{$_var2name}
{substr($varname, 0, 5)}
{$varname.'suffix'}
{className::$property}
{className::getProperty()}

// ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Œ
{$123number}
{$__two_underscore}

๋ณ€์ˆ˜ ํ• ๋‹น

{@ ... } ๋ฌธ๋ฒ•์€ ์‚ฌ์šฉํ•˜๋ฉด ์ค‘๊ด„ํ˜ธ ์•ˆ์˜ ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•˜์ง€ ์•Š๊ณ , ๋ณ€์ˆ˜์— ๊ฐ’์„ ํ• ๋‹นํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ€์ˆ˜์˜ ๊ฐ’์ด๋‚˜ ํ•จ์ˆ˜์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜์ง€ ์•Š๊ณ  ์‹คํ–‰๋งŒ ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

{@ $cms = 'xe'}
{@ $now = date()}

๋ณ€์ˆ˜ ์ด์Šค์ผ€์ดํ”„

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋“ฑ์—์„œ ์ค‘๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ์ค‘๊ด„ํ˜ธ ๋ฌธ๋ฒ•์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ด์Šค์ผ€์ดํ”„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์—ฌ๋Š” ์ค‘๊ด„ํ˜ธ { ์™€ ๋‹ซ๋Š” ์ค‘๊ด„ํ˜ธ }๋ฅผ ์„œ๋กœ ๋‹ค๋ฅธ ์ค„์— ์ž…๋ ฅํ•œ๋‹ค.
  • ๋˜๋Š”, ์—ฌ๋Š” ์ค‘๊ด„ํ˜ธ { ๋’ค์— ๊ณต๋ฐฑ์„ ์ž…๋ ฅํ•œ๋‹ค. ๋˜๋Š”, ์ฃผ์„๋ฌธ(/**/)์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
function () {
  return true;
}
function () { return true; }
function () {/**/return true;}

์™ธ๋ถ€ ํŒŒ์ผ ๋‹ค๋ฃจ๊ธฐ

JavaScript, CSS ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ๋“ค์ด๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•˜๋ ค๋ฉด load ๋˜๋Š” unload ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ๋‹ค๋ฅธ ํŒŒ์ผ์„ ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•˜๋ ค๋ฉด include ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ๋ฒ•์€ ์œ ํšจํ•œ XML ๋…ธ๋“œ์—ฌ์•ผ ํ•˜๊ณ  ์ž๊ธฐ ์ž์‹ ์„ ๋ฐ”๋กœ ๋‹ซ๋Š” ํƒœ๊ทธ(self-closing tag)์ด๋ฏ€๋กœ > ๊ธฐํ˜ธ ์•ž์— ๋ฐ˜๋“œ์‹œ ์Šฌ๋ž˜์‹œ(/)๋ฅผ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

assets ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

JavaScript, CSS ๋“ฑ์˜ ์™ธ๋ถ€ ํŒŒ์ผ์„ ํŽ˜์ด์ง€์— ๋กœ๋“œํ•˜๋ ค๋ฉด load ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. target ์†์„ฑ์œผ๋กœ ์ง€์ •ํ•œ ํŒŒ์ผ์˜ ํ™•์žฅ์ž์— ๋”ฐ๋ผ ๋™์ž‘์ด ๋‹ฌ๋ผ์ง€๋ฏ€๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์€ ๋ฐ˜๋“œ์‹œ .js๋ฅผ, CSS ํŒŒ์ผ์€ ๋ฐ˜๋“œ์‹œ .css๋ฅผ ํ™•์žฅ์ž๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. target์— ์ง€์ •ํ•˜๋Š” ํŒŒ์ผ์€ ํ…œํ”Œ๋ฆฟ ํŒŒ์ผ์˜ ์œ„์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ƒ๋Œ€ ๊ฒฝ๋กœ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

<load target="path/to/style.css" />
<load target="path/to/script.js" />

load ํƒœ๊ทธ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • target : ํŒŒ์ผ์˜ ๊ฒฝ๋กœ. ํ˜„์žฌ ํ…œํ”Œ๋ฆฟ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•จ
  • media : (CSS ์ „์šฉ) CSS์˜ media ์†์„ฑ. ๊ธฐ๋ณธ๊ฐ’์€ "all"์ด๋‹ค.
  • type : (JS ์ „์šฉ) ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ถœ๋ ฅํ•  ์œ„์น˜๋ฅผ ์ •ํ•œ๋‹ค. head(๊ธฐ๋ณธ๊ฐ’) ๋˜๋Š” body๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. body๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋‹ซ๋Š” </body> ํƒœ๊ทธ ๋ฐ”๋กœ ์œ„์— ๋“ฑ๋ก๋œ ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅ๋œ๋‹ค.
  • targetie : IE์˜ ์กฐ๊ฑด๋ถ€ ์ฃผ์„์„ ์‚ฌ์šฉํ•  ๋•Œ ์„ค์ •ํ•œ๋‹ค. ์กฐ๊ฑด๋ถ€ ์ฃผ์„์— ์ž…๋ ฅํ•˜๋Š” ๋ฌธ์ž์—ด๊ณผ ๊ฐ™์ด IE 6, gt IE 6 ๋“ฑ์œผ๋กœ ๊ฐ’์„ ์ž…๋ ฅํ•œ๋‹ค.
  • index : ์šฐ์„  ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•œ๋‹ค. ํŠน๋ณ„ํ•œ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๋ฉด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํŽธ์ด ์ข‹๋‹ค.

load ํƒœ๊ทธ๋Š” ์–ธ์–ด ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. target ์†์„ฑ์— lang.xml ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ํ•ด๋‹นํ•˜๋Š” ์–ธ์–ด๋ฅผ ์ฝ์–ด๋“ค์ธ๋‹ค.

<load target="../lang/lang.xml" />

ํ…œํ”Œ๋ฆฟ ํฌํ•จํ•˜๊ธฐ

PHP์—์„œ ์‚ฌ์šฉํ•˜๋Š” include ๋ฌธ๊ณผ ๋น„์Šทํ•œ ์—ญํ• ์„ ํ•˜๋ฉฐ. ์„ค์ •ํ•œ ํ…œํ”Œ๋ฆฟ ํŒŒ์ผ์„ ์ฝ์–ด๋“ค์—ฌ ํ•ด์„ํ•˜๊ณ  ํ™”๋ฉด์— ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. include ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , target ์†์„ฑ์— ์ฝ์–ด๋“ค์ธ ํŒŒ์ผ์„ ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค. ์ฝ์–ด๋“ค์ผ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋Š” ํ˜„์žฌ ํ…œํ”Œ๋ฆฟ ํŒŒ์ผ์„ ๊ธฐ์ค€์œผ๋กœ ํ•œ๋‹ค.

<include target="header.html" />

์ œ๊ฑฐํ•˜๊ธฐ

unload ํƒœ๊ทธ๋Š” load๋กœ ์ฝ์–ด๋“ค์ธ ํŒŒ์ผ์„ ์ œ๊ฑฐํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. load๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์™€ ๊ฐ™์€ ์†์„ฑ์„ ์ž…๋ ฅํ•˜๋ฉด ์ฝ์–ด๋“ค์ธ ํŒŒ์ผ์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค.

<unload target="path/to/style.css" media="all" />

unload ํƒœ๊ทธ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • target : ์ฝ์–ด๋“ค์ธ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ
  • media : (CSS ์ „์šฉ) CSS์˜ media ์†์„ฑ
  • type : (JS ์ „์šฉ) ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ถœ๋ ฅํ•  ์œ„์น˜
  • targetie : IE์˜ ์กฐ๊ฑด๋ถ€ ์ฃผ์„

DOM ์ œ์–ด๋ฌธ

HTML ์š”์†Œ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ํ˜•ํƒœ์˜ ๋ฌธ๋ฒ•์ด๋‹ค. ๋ธ”๋Ÿญ ๋ฌธ๋ฒ•๊ณผ ๋‹ฌ๋ฆฌ ๋ณ„๋„์˜ ์‹œ์ž‘/๋์„ ๋ณ„๋„๋กœ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋ฌธ๋ฒ•์ด ์ ์šฉ๋œ DOM์„ ๋Œ€์ƒ์œผ๋กœ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ์€ ๊ฐ„๋‹จํ•œ ์กฐ๊ฑด๋ฌธ์˜ ํ•œ ์˜ˆ์ด๋‹ค.

<img src="img.jpg" alt="Sample image" cond="$cond" />

cond๋ฌธ์˜ ์œ ํšจ ๋ฒ”์œ„๋Š” ๋ฌธ์žฅ์ด ์ ์šฉ๋œ DOM ์š”์†Œ <img>์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ด ํ…œํ”Œ๋ฆฟ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ PHP ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜๋œ๋‹ค.

<?php if($cond){ ?><img src="img.jpg" alt="Sample image" /><?php } ?>

์ด ๋ฐ–์— ์†์„ฑ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ์†์„ฑ ์กฐ๊ฑด๋ฌธ๋„ ์žˆ๋‹ค.

์†์„ฑ ์กฐ๊ฑด๋ฌธ

๋‹ค๋ฅธ ๋ฌธ๋ฒ•์ด DOM ์š”์†Œ์— ์ž‘์šฉํ•˜๋Š” ๋ฐ˜๋ฉด, ์†์„ฑ ์กฐ๊ฑด๋ฌธ์€ ํŠน์ • ์†์„ฑ์—๋งŒ ์ž‘์šฉํ•œ๋‹ค. ํŠน์ • ์†์„ฑ ๋’ค์— ํŒŒ์ดํ”„ ๋ฌธ์ž(|)์™€ cond="$cond" ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ์กฐ๊ฑด์„ ๋งŒ์กฑํ•  ๋•Œ๋งŒ ์†์„ฑ์„ ์ถœ๋ ฅํ•œ๋‹ค. ๋‹ค์Œ์€ $isActive์˜ ๊ฐ’์ด true์ผ ๋•Œ๋งŒ class="active" ์†์„ฑ์„ ์ถœ๋ ฅํ•˜๋Š” ํ…œํ”Œ๋ฆฟ ์˜ˆ์ œ์ด๋‹ค.

<a href="http://localhost" class="active"|cond="$isActive">Go</a>

์œ„ ํ…œํ”Œ๋ฆฟ์„ ์‹คํ–‰ํ•˜๋ฉด $active์˜ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

// $isActive = true ์ผ ๋•Œ
<a href="http://localhost" class="active">Go</a>

// $isActive = false ์ผ ๋•Œ
<a href="http://localhost">Go</a>

ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค

<a href="http://localhost" class="active"|cond="$obj->isActivated()">Go</a>

์กฐ๊ฑด๋ฌธ

ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•  ๋•Œ๋งŒ DOM ์š”์†Œ๋ฅผ ์ถœ๋ ฅํ•˜๋„๋ก ํ•œ๋‹ค. ์กฐ๊ฑด๋ฌธ์„ ์ ์šฉํ•  DOM ๋…ธ๋“œ์— cond ์†์„ฑ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

<img src="img.jpg" alt="Sample image" cond="$cond" />

์ด ํ…œํ”Œ๋ฆฟ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ PHP ๋ฌธ๋ฒ•์œผ๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค.

<?php if($cond){ ?><img src="img.jpg" alt="Sample image" /><?php } ?>

์ž์‹ ์š”์†Œ๋ฅผ ํฌํ•จํ•œ DOM์—๋„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

<div class="buttons" cond="$showButtons">
    <button type="button">Save</button>
    <button type="button">Reset</button>
</div>

์ด ํ…œํ”Œ๋ฆฟ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ PHP ๋ฌธ๋ฒ•์œผ๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค.

<?php if($showButtons){ ?>
<div class="buttons">
    <button type="button">Save</button>
    <button type="button">Reset</button>
</div>
<?php } ?>

๋ฐ˜๋ณต๋ฌธ

ํŠน์ • DOM ์š”์†Œ๋ฅผ ์ฃผ์–ด์ง„ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋ฐ˜๋ณต ์ถœ๋ ฅํ•œ๋‹ค. ๋ฐ˜๋ณต๋ฌธ์„ ์ ์šฉํ•  DOM ๋…ธ๋“œ์— loop ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ๋‹ค์Œ์€ $arr ๋ฐฐ์—ด์˜ ํ•ญ๋ชฉ ๊ฐฏ์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•ด์„œ ์ถœ๋ ฅํ•˜๋Š” ํ…œํ”Œ๋ฆฟ ์˜ˆ์ œ์ด๋‹ค.

// ํ…œํ”Œ๋ฆฟ
<ul>
  <li loop="$arr=>$val">Item : {$val}</li>
</ul>

// PHP
<ul>
  <?php foreach($arr as $val){ ?>
  <li>Item : <?php echo $val ?></li>
  <?php } ?>
</ul>

๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋‚˜ ์—ฐ๊ด€ ๋ฐฐ์—ด์˜ ํ‚ค ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ…œํ”Œ๋ฆฟ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

// ํ…œํ”Œ๋ฆฟ
<ul>
  <li loop="$arr=>$key,$val">Item {$key} : {$val}</li>
</ul>

// PHP
<ul>
  <?php foreach($arr as $key=>$val){ ?>
  <li>Item <?php echo $key ?>: <?php echo $val ?></li>
  <?php } ?>
</ul>

์ผ์ • ํšŸ์ˆ˜๋ฅผ ๋ฐ˜๋ณตํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” for ๋ฌธ๋ฒ•๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

// ํ…œํ”Œ๋ฆฟ
<ul>
  <li loop="$i=0; $i < count($arr); $i++">Item : {$arr[$i]}</li>
</ul>

// PHP
<ul>
  <?php for($i=0; $i < count($arr); $i++){ ?>
  <li>Item : <?php echo $i ?></li>
  <?php } ?>
</ul>

์˜ˆ๋ฅผ ๋“ค์–ด $arr์ด 1,2,3,4,5 ๋‹ค์„ฏ ๊ฐœ์˜ ์ˆซ์ž๋ฅผ ์ €์žฅํ•œ ๋ฐฐ์—ด์ด๋ผ๋ฉด ์ด ํ…œํ”Œ๋ฆฟ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ถœ๋ ฅ๋œ๋‹ค.

<ul>
  <li>Item : 1</li>
  <li>Item : 2</li>
  <li>Item : 3</li>
  <li>Item : 4</li>
  <li>Item : 5</li>
</ul>

ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋™์•ˆ ๊ณ„์† ๋ฐ˜๋ณตํ•˜๋Š” while ๋ฌธ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•œ๋‹ค. while ๋ฌธ๋ฒ•์˜ ํ‘œํ˜„์‹์€ ๋ฐ˜๋“œ์‹œ ๋ณ€์ˆ˜์— ๊ฐ’์„ ํ• ๋‹นํ•˜๋Š” ํ˜•ํƒœ์—ฌ์•ผ ํ•œ๋‹ค.

// ํ…œํ”Œ๋ฆฟ
<ul>
  <li loop="$item=get_item()">Item : {$item}</li>
</ul>

// PHP
<ul>
  <?php while($item=get_item()){ ?>
  <li>Item : <?php echo $item ?></li>
  <?php } ?>
</ul>

๊ฐ€์ƒ ๋…ธ๋“œ

์—ฌ๋Ÿฌ ๊ฐœ์˜ DOM์„ ํ•œ๊บผ๋ฒˆ์— ๋‹ค๋ฃจ์–ด์•ผ ํ•˜๋Š” ๋“ฑ ํ•œ ๊ฐœ์˜ DOM๋งŒ ๋‹ค๋ค„์„œ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ธฐ ์–ด๋ ค์šธ ๋•Œ๋Š” ๊ฐ€์ƒ ๋…ธ๋“œ <block>์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ€์ƒ ๋…ธ๋“œ <block>์€ ์‹ค์ œ๋กœ ํ™”๋ฉด์— ์ถœ๋ ฅ๋˜์ง€๋Š” ์•Š์ง€๋งŒ cond๋‚˜ loop๋ฅผ ์†์„ฑ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค์Œ ํ…œํ”Œ๋ฆฟ ๊ตฌ๋ฌธ์„ ๋ณด์ž.

<block cond="$cond">
  <a href="link1.html">Link1</a>
  <a href="link2.html">Link2</a>
</block>

์ด ์ฝ”๋“œ๋ฅผ PHP ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๊ฐ€ ๋œ๋‹ค.

<?php if($cond){ ?>
    <a href="link1.html">Link1</a>
    <a href="link2.html">Link2</a>
<?php } ?>

๊ฐ€์ƒ ๋…ธ๋“œ๋Š” ํ…œํ”Œ๋ฆฟ ํŒŒ์ผ ์•ˆ์— ์žˆ๋Š” ๋‹ค๋ฅธ HTML ์š”์†Œ์™€ ๋™๋“ฑํ•˜๊ฒŒ ํ•˜๋‚˜์˜ ์™„์ „ํ•œ ๋…ธ๋“œ๋กœ ์ทจ๊ธ‰๋˜์–ด์•ผ ํ•œ๋‹ค. ๋‹ค์‹œ ๋งํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋…ธ๋“œ๋ฅผ ๊ธฐ์ˆ ํ•  ๋•Œ ๊ฐ€์ƒ ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

// ์ž˜๋ชป๋œ ์‚ฌ์šฉ๋ฒ•
<a href="link.html" <block cond="$style">style="{$style}"</block> class="link">Link</a>

๋ธ”๋Ÿญ ์ œ์–ด๋ฌธ

๋ธ”๋Ÿญ ๋ฌธ๋ฒ•์€ @๋กœ ์‹œ์ž‘ํ•˜๋Š” HTML ์ฃผ์„ ํ˜•์‹์œผ๋กœ ์ž‘์„ฑํ•œ๋‹ค.

์กฐ๊ฑด๋ฌธ

์กฐ๊ฑด๋ฌธ์—๋Š” if, else, elseif๊ฐ€ ์žˆ๊ณ  if๋กœ ์‹œ์ž‘ํ•œ ๊ตฌ๋ฌธ์„ ๋‹ซ์„ ๋•Œ๋Š” endif๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

if ๋ฌธ

์กฐ๊ฑด์„ ๋น„๊ตํ•˜์—ฌ ์กฐ๊ฑด์— ๋งž์œผ๋ฉด ๋ธ”๋Ÿญ ์•ˆ์˜ ํ…œํ”Œ๋ฆฟ์„ ์ถœ๋ ฅํ•œ๋‹ค. if๋กœ ์‹œ์ž‘ํ•˜๊ณ  endif๋กœ ๋ธ”๋Ÿญ์„ ๋งˆ์น˜๋ฉฐ, elseif์™€ else ๋“ฑ์„ ๋ธ”๋Ÿญ ์•ˆ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค(elseif์— ๊ณต๋ฐฑ์ด ์—†์Œ์— ์ฃผ์˜). ๋‹ค์Œ์€ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ if๋ฌธ ์˜ˆ์ œ์ด๋‹ค.

<!--@if($var)-->Is this printed?<!--@endif-->

๋‹ค์Œ ์˜ˆ์ œ์ฒ˜๋Ÿผ else ๋˜๋Š” elseif ๋ฌธ์„ ์ถ”๊ฐ€ํ•ด ๋‹ค์–‘ํ•œ ์กฐ๊ฑด์„ ๋น„๊ตํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

<!--@if($var)-->
  I am the first!
<!--@elseif($another_var)-->
  Second. Not bad.
<!--@else-->
  Oops. I am the last.
<!--@endif-->

๋ฐ˜๋ณต๋ฌธ

๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด ๋“ฑ ๊ฐ’์„ ๋‚˜์—ดํ•  ์ˆ˜ ์žˆ๋Š”(enumerable) ๊ฐ์ฒด์— ๋Œ€ํ•ด ๋ฐ˜๋ณต๋ฌธ์„ ์‹คํ–‰ํ•œ๋‹ค. for, foreach, while๋กœ ์‹œ์ž‘ํ•˜๊ณ  ๊ฐ๊ฐ endfor, endforeach, endwhile๋กœ ๋ธ”๋Ÿญ์„ ๋งˆ์นœ๋‹ค.

for ๋ฌธ

for๋กœ ์‹œ์ž‘ํ•˜๊ณ  endfor๋กœ ๋งˆ์น˜๋Š” ๋ฐ˜๋ณต๋ฌธ์ด๋‹ค. ๋ฐ˜๋ณต ํšŸ์ˆ˜๊ฐ€ ์ •ํ•ด์ง„ ๊ฒฝ์šฐ์— ์œ ์šฉํ•˜๋‹ค.

<!--@for($i = 0; $i < 10; $i++)-->
  <span>Number : {$i}</span>
<!--@endfor-->

foreach ๋ฌธ

foreach๋กœ ์‹œ์ž‘ํ•˜๊ณ  endforeach๋กœ ๋งˆ์น˜๋Š” ๋ฐ˜๋ณต๋ฌธ์ด๋‹ค. ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๋ฐ˜๋ณตํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค.

<!--@foreach($arr as $key=>$name)-->
  <span>Item {$key} : {$name}</span>
<!--@endforeach-->

while ๋ฌธ

while๋กœ ์‹œ์ž‘ํ•˜๊ณ  endwhile๋กœ ๋งˆ์น˜๋Š” ๋ฐ˜๋ณต๋ฌธ์ด๋‹ค. ๋ฐ˜๋ณต ํšŸ์ˆ˜๋ฅผ ์•Œ ์ˆ˜ ์—†์„ ๋•Œ ์œ ์šฉํ•˜๋‹ค.

<!--@while($item=get_item())-->
  <span>Item : {$item}</span>
<!--@endwhile-->
โš ๏ธ **GitHub.com Fallback** โš ๏ธ