Smarty テンプレート内でPHPを実行する

PHP

Smartyはテンプレートファイルとプログラムを分離できるのがよいところですが、時にはテンプレートファイル内で、プログラムを実行したい場合もあるかと思います。

そんな時は、次のようにSmartyタグを書けば、PHPが実行できます。

 {php}    {/php}
 
 例
 {php}
   // PHP スクリプトをテンプレートから直接インクルードします
    include('/path/to/display_weather.php');
 {/php}

http://www.smarty.net/manual/ja/language.function.php.php

Smarty タイムスタンプを日付に整形

PHP

Smarty タイムスタンプを日付に整形

Smartyを利用すると、こんなこともできます。
タイムスタンプで持っているデータを修飾子(Smarty変数の後の|の後につける文字)をつけるだけで、日付形式に変換します。

 {$startDate|date_format:"%Y/%m/%d"}

参考:Smarty公式ページ 日付
http://www.smarty.net/docsv2/ja/tips.dates.tpl

上記参考サイトによると、Smaryを利用するならなるべくタイムスタンプで日付をもっていた方がよい、ということです。
テンプレート上で、日付の比較もできますもんね。

Smarty ほかのテンプレートをincludeする

PHP

Smarty ほかのテンプレートの内容をincludeする

Smartyの基本便利機能の一つに、一つのテンプレートファイルを作っておけば、他のテンプレートファイルで読み込ませることができる、というものがあります。
何度も利用するコンテンツや、ワイヤーフレームなどは、極力このincludeを利用しましょう!
使い方はとっても簡単 [smile]

 //Smartyテンプレートファイル内で次のように記述
 {include file="test.html"} 

Smarty truncateを日本語で使う

PHP

Smartyで変数の最初から何文字を切り取る、というtruncateという修正子がありますが、マルチバイトに対応していないので、日本語だと文字化けする可能性があります。

検索すると、いくつかやり方があるみたいですが、下記のブログにあったものを紹介します。

Multibyte String Truncate Modifier for Smarty – mb_truncate

英語が苦手な方のために、解説です。

  1. PHPコードをコピーして、modifier.mb_truncate.php という名前で保存します。
  2. Smartyの/libs/plugins内にそのファイルを保存します。
  3. 使用するHTMLファイル内で、次のように使います。
 //$test_stringは切り取りしたい変数です。13が文字数、...が続く文字列です。
 {$test_string|mb_truncate:13:"..."}

下記の方法もあるようです。こちらは試してません。(^_^;
http://c-brains.jp/blog/wsg/07/06/14-160910.php

Smarty PHPの定数を読み込む

PHP

Smarty PHPの定数を読み込む

PHPのテンプレートエンジンとして便利なSmarty。

PHPで定義した定数も読み込むことができます。

 //phpファイルに記述
 define('TEST','テスト');
 //Smartyのテンプレートファイル内で下記のように記述
 {$smarty.const.TEST}