前カスタム修正子を作成しましたが、同じフォルダにfunction.html_select_date.phpといったファイルがあるのに気付いた人もいるかもしれません。
言うまでもなく{html_select_date}です。
というわけでカスタム関数も簡単に作成することができます。
今回は試しに{now}を作ってみます。
Smartyは{$smarty.now}でタイムスタンプを返してくれるのですが、マニュアルにあるとおり実行した時点でのタイムスタンプが返ってきます。
{$smarty.now}{1|sleep}{$smarty.now}
とすると1ずれた時間になってしまいます。
一度参照すれば以降は同じタイムスタンプが返ってきた方が便利でしょう。
プラグインフォルダにfunction.now.phpを作成してsmarty_function_nowという名前の関数を作成すれば、Smartyから{now}で呼び出すことができます。
smarty/libs/plugins/function.now.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
function smarty_function_now($params, &$smarty){
//初期値に関数とかは使えない
static $timestamp=false;
//まだ定義されてない時だけ定義
if(!$timestamp){
$timestamp=time();
}
//返却
if($params['format']){
return strftime($params['format'],$timestamp);
}else{
return $timestamp;
}
}
|
{now}{1|sleep}{now}
無事に同じタイムスタンプが取得できました。めでたし。
ついでに引数を指定することでフォーマットも指定できるようになっています。
{now format='%Y-%m-%d %H:%M:%S'}
というふうに使えます。
複数箇所で同じ時刻を参照したい場合に便利かもしれません。
PR
トラックバック
トラックバックURL: