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 件のコメント:
コメントを投稿