忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2024/04/16 22:49 |
Smarty-06:カスタム関数

カスタム修正子を作成しましたが、同じフォルダに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
<?php
    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


2009/07/28 15:05 | Comments(0) | TrackBack() | PHP

トラックバック

トラックバックURL:

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<ジャンラインのライバルはジャンラインだけ | HOME | Smarty-05:Smartyの便利関数>>
忍者ブログ[PR]