Smartyはテンプレートファイルとプログラムを分離できるのがよいところですが、時にはテンプレートファイル内で、プログラムを実行したい場合もあるかと思います。
そんな時は、次のようにSmartyタグを書けば、PHPが実行できます。
{php} {/php} 例 {php} // PHP スクリプトをテンプレートから直接インクルードします include('/path/to/display_weather.php'); {/php}
Smartyはテンプレートファイルとプログラムを分離できるのがよいところですが、時にはテンプレートファイル内で、プログラムを実行したい場合もあるかと思います。
そんな時は、次のようにSmartyタグを書けば、PHPが実行できます。
{php} {/php} 例 {php} // PHP スクリプトをテンプレートから直接インクルードします include('/path/to/display_weather.php'); {/php}
Smartyを利用すると、こんなこともできます。
タイムスタンプで持っているデータを修飾子(Smarty変数の後の|の後につける文字)をつけるだけで、日付形式に変換します。
{$startDate|date_format:"%Y/%m/%d"}
参考:Smarty公式ページ 日付
http://www.smarty.net/docsv2/ja/tips.dates.tpl
上記参考サイトによると、Smaryを利用するならなるべくタイムスタンプで日付をもっていた方がよい、ということです。
テンプレート上で、日付の比較もできますもんね。
Smartyの基本便利機能の一つに、一つのテンプレートファイルを作っておけば、他のテンプレートファイルで読み込ませることができる、というものがあります。
何度も利用するコンテンツや、ワイヤーフレームなどは、極力このincludeを利用しましょう!
使い方はとっても簡単
//Smartyテンプレートファイル内で次のように記述 {include file="test.html"}
Smartyで変数の最初から何文字を切り取る、というtruncateという修正子がありますが、マルチバイトに対応していないので、日本語だと文字化けする可能性があります。
検索すると、いくつかやり方があるみたいですが、下記のブログにあったものを紹介します。
Multibyte String Truncate Modifier for Smarty – mb_truncate
英語が苦手な方のために、解説です。
//$test_stringは切り取りしたい変数です。13が文字数、...が続く文字列です。 {$test_string|mb_truncate:13:"..."}
下記の方法もあるようです。こちらは試してません。(^_^;
http://c-brains.jp/blog/wsg/07/06/14-160910.php
PHPのテンプレートエンジンとして便利なSmarty。
PHPで定義した定数も読み込むことができます。
//phpファイルに記述 define('TEST','テスト');
//Smartyのテンプレートファイル内で下記のように記述 {$smarty.const.TEST}