7 1 2009
Smarty Plugins 확장하기
Smarty를 사용하다 보면 기본 적인 함수, 수정자(modifier) 등이 있으나
프로젝트에 따른 사용자 정의 플러그-인의 필요성을 느끼게 된다.
Java에서 사용자 정의 태그 라이브러리를 만들어 사용하 듯이 Smarty 에서도 플러그-인을 쉽게 추가할 수 있다.
추가로 개발된 플러그-인을 템플릿에서 사용하기 위해서는 Smarty의 플러그-인 디렉토리 설정을 변경해야 한다.
Smarty 하위 클래스를 사용할 때 설정 방법.
class Project_Smarty extends Smarty (
public function __construct() {
parent::__construct();
$this->plugins_dir = array(
"plugins", // SMARTY 디렉토리의 기본 플러그-인
PROJECT_PATH."/libs/Project/SmartyPlugins"
);
// 기타 설정
}
}
my_func_test 플러그-인 (SmartyPlugins/function.my_func_test.php)
function smarty_function_my_func_test($params, &$smarty) {
$data = array("첫 번째", "두 번째", "세 번째");
return $data[array_rand($data)];
}
템플릿(test.tpl) 에서 사용 예:
내가 선택한 것은 {$my_func_test}입니다.
my_mod_test 플러그-인 (SmartyPlugins/modifier.my_func_test.php)
function smarty_modifier_my_mod_test($no) {
$data = array("첫 번째", "두 번째", "세 번째");}
return $data[$no];
}
템플릿(test.tpl)에서 사용 예:
{assign var="my_num" value="2"}
내가 선택한 것은 {$my_num|my_mod_test}입니다.
