Smarty Plugin デリミタを途中で変えてみる
Smarty Plugin
こんなことがあったので、自分用にメモ。
別プロジェクトだけど
ヘッダファイルとかフッタファイルは共通で使いたい・・・
けど、Smartyのデリミタ(こんなの{$hoge})の設定が違くて
普通には使えない。
ソースをコピペで回避すると
ファイル数が増えた時に2間管理になって困るし・・・。
ということでSmartyのプラグインを作って回避した。
はじめて挑戦したけど、意外と簡単だった。
function smarty_function_delim_include($params, &$smarty)
{
if (empty($params["file"])){
$smarty->trigger_error("param:'file' is not defined");
return;
}
if (!$smarty->template_exists($params["file"])){
$smarty->trigger_error($params["file"] . " not found");
return;
}
if(empty($params["ldelim"]) || empty($params["rdelim"])){
$smarty->trigger_error("param:'ldelim or rdelim' is not defined");
return;
}
// デリミタ保存
$_buff_ldelim = $smarty->left_delimiter;
$_buff_rdelim = $smarty->right_delimiter;
// デリミタ変更
$smarty->left_delimiter = $params["ldelim"];
$smarty->right_delimiter = $params["rdelim"];
$_params = array();
$_params["smarty_include_tpl_file"] = "file:" . $params["file"];
$_params["smarty_include_vars"] = array();
$smarty->_smarty_include($_params);
// デリミタ戻し
$smarty->left_delimiter = $_buff_ldelim;
$smarty->right_delimiter = $_buff_rdelim;
return;
}
他にもっといい方法がありそうだけど、今回はこんなもんで。
0 件のコメント:
コメントを投稿