프로그래밍.../Smarty | Posted by 고기킬러 2009. 12. 23. 10:09

Smarty 템플릿 포함하기(INCLUDE)

INCLUDE (템플릿 포함하기)
-------------------------

이제는 Smarty에서 다른 템플릿 파일들을 어떻게 포함하는지 살펴보도록 하지요. 이것은
당신이 headers나 footers같은 반복적인 템플릿 데이터를 사용할 경우를 위한 것인데요.
이를 위해서는 templates/header.tpl과 templates/footer같은 별도의 템플릿 파일들을 만
들 필요가 있답니다.


--------- index.php --------
<?php
require("Smarty.class.php");
$smarty = new Smarty;
$smarty->assign("Name","Ned");
$smarty->assign(array(
"FirstName" => "Ned",
"LastName" => "Flanders",
"Address" => "Springfield"
));
$zipcode = "55555";
$smarty->assign("Zipcode",$zipcode);
$smarty->display("index.tpl");
?>

--------- templates/index.tpl --------
{include file="header.tpl" title="Home Page"}
Hello, {$Name}!<br>
{$FirstName}, {$LastName}<br>
{$Address}, {$Zipcode}
{include file="footer.tpl"}

--------- templates/header.tpl --------
<HTML>
<TITLE>{$title|default:"no title"}</TITLE>
<BODY>

--------- templates/footer.tpl --------
</BODY>
</HTML>


우리가 포함한 header.tpl에 어떻게 "title"이라는 변수를 넘겨주고 있는지 주목해 보세
요. 당신은 이런 식으로 당신이 원하는 더 많은 변수들을 넘겨줄 수 있어요. 포함된 템플
릿 파일들은 현재 템플릿 변수들을 모두 물려받게 되고 또한 위와 같이 넘겨진 변수들도
가지게 되는데, 이렇게 넘겨진 변수들은 오직 포함된 템플릿 파일에만 유효한 변수가 되
지요[역주: 함수에 넘겨진 변수는 함수 내에서만 접근되고 그 다음 사라지듯이 Smarty도
템플릿에서 포함한 파일로 이루어지는 변수 전달을 같은 방식으로 처리한다는 뜻입니다].

그리고 templates/header.tpl에서 $title 변수를 어떻게 출력하는지도 주목할 필요가 있
겠지요. 이것은 "default"라고 불리는 변수 변환자[역주: "variable modifier"가 원문인
데 변수 치환자라고 할까 하다가 이렇게 번역했습니다]를 사용한 모습이랍니다.

{$title}이라는 문장이 $title로 대입된 변수가 없으면 아무것도 하지 않는데 반하여
{$title|default:"no title"}이란 문장은 $title로 대입된 변수가 없어도 앞의 경우처럼
빈둥거리는 대신 "no title"이라는 출력을 수행한답니다..


출처 : PHP SCHOOL
역자 : 조한석 님 <sizer@systong.co.kr>

'프로그래밍... > Smarty' 카테고리의 다른 글

Smarty 섹션: 동적 블럭(SECTIONS: Dynamic Blocks)  (0) 2009.12.23
Smarty IF/ELSEIF/ELSE  (0) 2009.12.23
Smarty 변수대입(ASSIGNING VARIABLES)  (0) 2009.12.23
Smarty 설치하기  (0) 2009.12.23
Smarty 시작하기  (0) 2009.12.23
프로그래밍.../Smarty | Posted by 고기킬러 2009. 12. 23. 10:07

Smarty 변수대입(ASSIGNING VARIABLES)


ASSIGNING VARIABLES (변수 대입)
-------------------------------

템플릿으로의 변수 대입은 변수와 값을 쌍으로 해서 직접 대입되게 되는데, 예를 들면 아래와 같이 소스가 구성된답니다.

--------- index.php --------
<?php
require("Smarty.class.php");
$smarty = new Smarty;
$smarty->assign("Name","Ned");
$smarty->assign(array(
"FirstName" => "Ned",
"LastName" => "Flanders",
"Address" => "Springfield"
));
$zipcode = "55555";
$smarty->assign("Zipcode",$zipcode);
$smarty->display("index.tpl");
?>


--------- templates/index.tpl --------
<HTML>
<TITLE>Hello</TITLE>
<BODY>
Hello, {$Name}!<br>
{$FirstName}, {$LastName}<br>
{$Address}, {$Zipcode}
</BODY>
</HTML>


당신은 변수들을 일 대 일로 대입할 수도 있고, 혹은 연관 배열을 사용할 수도 있고 대입
된 변수들을 추가할 수도 있는데, 이것에 대해서 메뉴얼에서 자세히 설명해주니까 그것을
참조하면 되겠지요.


출처 : PHP SCHOOL
역자 : 조한석 님 <sizer@systong.co.kr>

'프로그래밍... > Smarty' 카테고리의 다른 글

Smarty 섹션: 동적 블럭(SECTIONS: Dynamic Blocks)  (0) 2009.12.23
Smarty IF/ELSEIF/ELSE  (0) 2009.12.23
Smarty 템플릿 포함하기(INCLUDE)  (0) 2009.12.23
Smarty 설치하기  (0) 2009.12.23
Smarty 시작하기  (0) 2009.12.23
프로그래밍.../Smarty | Posted by 고기킬러 2009. 12. 23. 10:04

Smarty 설치하기

INSTALLATION (설치하기)
-----------------------

Smarty 압축 파일을 풀면 당신은 Smarty.class.php, Smarty_Compiler.class.php,
Config_File.class.php 그리고 "plugins" 디렉토리 같은 여러 파일들을 볼 수 있을 텐데
우선 이 모든 파일들을 당신의 PHP include_path에 지정되어 있는 디렉토리 어딘가에 옮
길 필요가 있어요. 그러고 나서 PHP 스크립트에[역주: 원문에서는 PHP 스크립트라고 하
는 대신 "your application"이라고 했지만, 이 편이 더 이해가 빠를 것 같아 이렇게 번역
했습니다] require("Smarty.class.php") 문장을 적어주면 해당 클래스를 찾을 수 있게 되
겠지요. 음, 하지만 다른 방법으로 당신의 PHP 스크립트에 SMARTY_DIR 상수를 설정하는 방
법도 있어요. Smarty 클래스 파일들이 위치한 패스가 있는 디렉토리들은 이 두 가지 방식
을 사용할 수 있는데, 여기서 매우 중요한 것 하나는 SMARTY_DIR 패스를 지정할 때는 끝에
슬래쉬를 꼭 붙여야 한다는 것이겠죠!

자 그럼 이제 실제로 당신의 웹 서버의 Document Root 디렉토리 어딘가로 시야를 옮겨 보
도록 하지요. 이 가이드에서는 당신이 웹 서버의 Document Root에 만들 디렉토리 이름으
로 Smarty를 사용할 텐데, 모든 작업은 여기에서 이루어지고 있음을 잊지 마세요.


$> cd /home/htdocs
$> mkdir Smarty
$> cd Smarty


다음 차례는 Smarty가 사용할 디렉토리들을 만들 차례가 되겠군요.


$> mkdir templates
$> mkdir templates_c
$> mkdir configs


Smarty는 쓰기가 가능한 templates_c 디렉토리를 필요로 한답니다. 그러므로 당연히 당신
은 해당 디렉토리를 웹 서버 유저(보통 Unix에서는 "nobody:nobody"이 사용되고 Max OS에
서는 "www:www"이 사용되지요.[역주:레드햇 리눅스에서는 "apache:apache"가 사용됩니다])
가 쓰기가 가능하도록 해당 디렉토리의 소유주와 퍼미션을 아래와 같이 고쳐주어야겠지요.

물론 당신은 'chmod 777'을 사용할 수도 있어요. 음 그렇지만, 글쎄요. 많은 사용자들이
사용하는 시스템에서는 보안 문제도 있고 하니 별로 권장하고 싶지는 않군요. 이것에 대
해서는 메뉴얼에서 보다 많은 정보를 찾아보는 것이 좋을 것 같군요.


$> chown nobody:nobody templates_c
$> chmod 700 templates_c
$> ls -l
drwxrwxr-x 2 user group 512 Jan 18 14:18 configs/
drwxrwxr-x 2 user group 512 Jan 18 14:18 templates/
drwx------ 2 nobody nobody 512 Jan 18 14:18 templates_c/


위와 같이 하거나 덜 안전한 방법으로 아래와 같이 해 줄 수도 있어요.


$> chmod 777 templates_c
$> ls -l
drwxrwxr-x 2 user group 512 Jan 18 14:18 configs/
drwxrwxr-x 2 user group 512 Jan 18 14:18 templates/
drwxrwxrwx 2 user group 512 Jan 18 14:18 templates_c/


자 이제 당신은 index.php와 templates/index.tpl이라는 두 개의 파일을 만들 차례가 되
었네요. 물론 index.php는 당신의 웹 브라우져에서 부를 수 있는 것이어야겠지요.

index.tpl은 Smarty가 템플릿 파일로서 사용할 파일인데, 이것은 브라우져에서 직접 엑세
스되지는 않고, 오직 Smarty 클래스에 의해서만 접근된답니다[역주:실제로 위와 같이 하
면 웹 서버에 특별한 설정을 추가하지 않는 웹 브라우져를 통해 접근할 수 있습니다].


--------- index.php --------
<?php
require("Smarty.class.php");
$smarty = new Smarty;
$smarty->assign("Name","Ned");
$smarty->display("index.tpl");
?>


--------- templates/index.tpl --------
<HTML>
<TITLE>Hello</TITLE>
<BODY>
Hello, {$Name}!
</BODY>
</HTML>


자 이제 잘 작동하고 있는지 index.php를 당신의 웹 브라우져로부터 불러 보세요.

http://your.host.com/Smarty/index.php

당신의 브라우져로부터 "Hello, Ned!"를 볼 수 있나요? 그렇지 않다면 지금까지 위에서
해 온 과정들을 잘 따라 했는지 살펴보시고 다시 시도해 보세요. 아니면 메뉴얼에 있는
설치 작업에 관한 부분을 체크해 보고, 당신이 PHP 설치를 제대로 했는지도 살펴볼 필요
가 있을 거에요. 그래도 여전히 문제가 있다면 메일링 리스트에 질문을 던져 보던가 FAQ
에서 문제를 해결할 수 있을지도 모르겠네요.

이제 "Hello, Ned!"를 브라우져로부터 볼 수 있다구요? 좋아요~[역주: 차범근 스타일로
읽어 보세요. :)]

Smarty가 index.tpl를 어떻게 php 스크립트로 컴파일했는지 궁금하시다면 templates_c 디
렉토리를 찾아보시면 알 수 있어요. Smarty는 이렇게 맨 처음 한번만 컴파일하고 그 다음
에는 게속 이 컴파일된 스크립트를 가지고 작동하게 된답니다. 물론 index.tpl이 바뀌게
된다면 자동으로 재컴파일해서 대체하게 되지요[역주:이것은 JSP가 채택하고 있는 방식과
굉장히 유사하다고 볼 수 있습니다].

이런 이유로 당신은 templates_c 디렉토리에 대해서는 관심을 끄셔도 좋아요. 당신은 이
런 기술적 부분에 대해서 걱정할 필요가 하나도 없고, 이런 부분은 Smarty에게 떠넘겨 버
리면 되요. 참, 그리고 당신은 템플릿으로부터 컴파일된 PHP 스크립트를 볼 수 있고 그것
을 아마 고칠 수도 있을 거에요 하지만, 이것들을 고칠 생각은 절대로 하지 않는 게 신상
에 이로울 테죠?

여기까지 잘 되었다면, 이제 당신은 잘 작동하는 Smarty를 가지게 되었으므로 이제
Smarty에서 사용하고 있는 템플릿 언어의 특징들 중 몇 가지를 살펴보도록 하지요.


출처 : PHP SCHOOL
역자 : 조한석 님 <sizer@systong.co.kr>