テンプレートの概要

※[ ]内は各プラグインのID名

テンプレートの変更

  • Freo Template Gallery【2014/05/30追加】
    freoのテンプレートを紹介するギャラリーサイト
  • テンプレートを変えてみよう(Freo Template Gallery/freoはじめて物語)【2014/06/28追加】
    Freo Template Galleryで紹介されているテンプレートに着せ替える方法

テンプレートの基本

Smartyの主な組み込み関数について

Smartyの主なカスタム関数について


テンプレート編集ツール


  • 【注意】Windows付属のメモ帳(Notepad)は使用しない(文字コードがUTF-8(BOMあり)になってしまい表示できなくなる)。
  • TeraPad(Win)
    フリーのテキストエディター。ファイルの右クリックから開くことができる。
    第二水準漢字や他国の言語などUnicode文字は対応していないので、テンプレートの編集には使えるがデータベースの編集だときついかも。
  • EmEditor(Win)
    多機能なテキストエディター。Unicode文字対応。
    Professional版はシェアウェア(4000円/年&1年後より2,000円/年または永久ライセンス15,000円)だが、xp以前を使用しているならFree版(無料)でも十分使用できる。
  • サクラエディタ(Win)
    カスタマイズ性に優れた無料の高機能テキストエディター。Unicode文字対応。
  • Notepad++(Win)【2014/11/05追加】
    数多くのプログラム言語に対応し、拡張性に優れた高機能な無料テキストエディター。Unicode文字対応。
  • Mery(Win)【2016/07/10追加】
    プラグインやマクロも利用できる、Unicode対応の高機能かつ多機能なテキストエディター。
  • mi(Mac&Win)
    MacOSX用のテキストエディター(Win版もあり)。
    現在は無料版のみだが、将来的には高機能なシェアウェア版が出る予定。
  • CotEditor(Mac)【2016/07/10追加】
    エンコーディング判定や和英混ざった文書の描画、縦書き表示など、日本語特有の問題にも対応したOS X 専用プレーンテキストエディタ。
  • WinMerge 日本語版(Win)
    テキスト内容を比較して表示してくれるツール(テンプレートが更新された場合に使用すると便利)

テンプレートの編集についての注意事項

  • テンプレート内に{}を入れたい場合は、その記述部分を{literal}{/literal}で囲む。
  • テンプレート内にPHPプログラムを記述するには、プログラムを<?php?>ではなく、{php}{/php}で囲む。
  • テンプレート内にコメントを記述するには、コメントを{**}で囲む(HTMLソースには表示されない)。【2013/09/13追加】
    参考:テンプレート内のコメント(Smarty)
  • テンプレートを編集したのにブラウザで更新しても反映されない場合は、templates_c/内にある、.htaccess以外の拡張子がphpのファイルをすべて削除。サーバによってはFTPから削除できない場合があるので、そのときはremove.phpを利用して削除。
  • ブラウザの表示には影響はないが、もしHTMLソース内に
<!--<br />
<b>Warning</b>: htmlspecialchars() expects parameter 1 to be string, array given in <b>http://www.example.com/freo/libs/smarty/plugins/modifier.escape.php</b> on line <b>26</b><br />
<br />
...
-->
のようなエラーが入っていたら、
<!--{if $xxxxx|smarty:nodefaults}-->
のように|smarty:nodefaultsを追加して回避する。【2015/02/28追加】

テンプレートで使用する変数について

{ }内にある$から始まる文字列を「変数」という。

変数の配列

変数は{$xxx.ID}で特定のIDのものを取得する(連想配列)だけでなく、別の変数を配列のインデックスとして{$xxx[$IDの変数]}で取得することもできる。
例:ユーザーの名前
  • 特定のユーザーIDのものを取得 ⇒ {$freo.refer.users.ユーザーID.name}
  • ログインユーザーのものを取得 ⇒ {$freo.refer.users[$freo.user.id].name}

{foreach}内での変数

<!--{foreach from=$xxx item='yyy'}-->~<!--{/foreach}-->
⇒繰り返し処理で取得する{$xxx}という配列変数の各要素の値は{$yyy}という変数に格納される。
例:ユーザー一覧でのユーザーの名前
<ul>
 <!--{foreach from=$freo.refer.users|smarty:nodefaults item='refer_user'}-->
 <li>{$refer_user.name}</li>
 <!--{/foreach}-->
</ul>

変数の種類


freoの変数データを調べる裏技(使用後は直ちに元に戻すこと)

libs/freo/internals/default/default.phpの22行目辺りにあるglobal $freo;の次の行にprint_r('<pre>');print_r($freo);print_r('</pre>');と書いてブラウザからindex.phpにアクセスすると、$freoの中身がすべて表示されるので、ざっと見てみるのが解りやすいかもしれません。
※同様にテンプレート内に
{$xxx|smarty:nodefaults|@debug_print_var}
を追加して調べることも可能【2017/04/15追加】

Smartyの変数の修飾子

変数の後に | で指定するものを「修飾子」という。

標準装備の主な修飾子(freo.jpの変数の修飾子についてに加筆)

  • 時刻を整形
    {$smarty.now|date_format:"%Y/%m/%d %H:%M:%S"} 例:現在の時刻を整形
  • 変数をフォーマットして表示【2013/09/22追加】
    {$smarty.now|string_format:"%05d"} 例:「1234.56789」を5桁で0埋めの「01234」に整形
  • テキスト内にURLがあれば、自動でリンク(freoオリジナル)
    {$xxx|autolink} 例:「http://www.example.com/」が「<a href="http://www.example.com/">http://www.example.com/</a>」に変換される
    ※メールアドレスも「<a href="mailto:メールアドレス">メールアドレス</a>」に変換される
  • テキストをテキストで分割(freoオリジナル)
    <!--{foreach from=$xxx|explode:"\n" item='value'}-->{$value}<!--{/foreach}--> 例:$xxxの設定に途中で改行(\n)を入れることによって複数の値が設定できる
  • テキストを特定の長さで切り捨て(半角文字で使用)【2013/09/17追加】
    {$xxx|truncate:20:'...'} 例:20文字の場合
  • マルチバイトのテキストを特定の長さで切り捨て(freoオリジナル)
    {$xxx|mb_truncate:20:'...'} 例:20文字の場合
  • 改行文字"\n"をHTMLの<br />タグに変換【2013/09/17追加】
    {$xxx|nl2br} 例:「テキスト\n」が「テキスト<br />」に変換される(テキストが改行されて表示)
  • 連続する改行"\n\n"を段落に変換(freoオリジナル)
    {$xxx|nl2p} 例:「テキスト\n\n」が「<p>テキスト</p>」に変換される(テキストが段落として表示)
  • 正規表現でパターンマッチ(freoオリジナル)
    {if $xxx|regex_match:'/^gallery\//'} 例:$xxxに"gallery"が含まれているかチェック
    preg_match()正規表現チェッカー(正規表現を記述する際の動作チェックができるオンラインツール)【2013/09/13追加】
  • 正規表現で置換【2013/09/17追加】
    {if $xxx|regex_replace:"/[\r\t\n]/":" "} 例:$xxxに復改、タブおよび改行が含まれていたら半角空白に置換
  • テキストでHTMLを反映させる
    {$xxx|smarty:nodefaults}
    ※コメント欄など管理者以外が入力内容を書き換えることができる変数には使用しないこと
  • 変数が空の場合に表示されるデフォルト値を設定【2013/09/15追加】
    {$xxx|default:'デフォルト値'}
  • 変数のエンコードやエスケープを行う【2013/09/15追加】
    {$xxx|escape}(& " ' < > をエスケープ)※freoでは標準で設定済なので改めて設定する必要なし
    <a href="{$xxx|escape:'url'}"> (URLを特殊なコードに変換)
    <a href="mailto:{$xxx|escape:'hex'}">{$xxx|escape:'mail'}</a> (emailを特殊なコードに変換し、emailアドレスを混乱させる)
  • マークアップタグを取り除く【2013/09/15追加】
    {$xxx|strip_tags} 例:「<strong>テキスト</strong>」が「 テキスト 」に変換される(太文字にならない)
    ※デフォルトではタグの部分が半角空白に置き換えられるので、空白を詰める場合は{$xxx|strip_tags:false}にする。
  • スラッシュを含む文字列$xxxから最も上の階層を取り出す 使えるかもしれないsmarty修飾子や関数(freo&WebDiaryProメモ)【2015/01/11追加】
    {$xxx|strstr:'/':true}(※PHP5.3以降の場合)
  • 文字列内の部分文字列が最初に現れる場所を見つける【2016/06/19追加】
    {$smarty.server.REQUEST_URI|strpos:'/page/page1' === 0} 例:/page/page1内に適用

foreach関連の修飾子

Smarty用プラグイン固有の修飾子【2017/06/24追加】



※ここに載っていない情報が何かあれば...情報を追加・編集する
※編集は面倒・やり方が分からない場合は、コメント欄に書いていただければ有志の方で編集します。

コメントを投稿するには画像の文字を半角数字で入力してください。


画像認証

  • 最終更新:2017-09-26 13:27:07

このWIKIを編集するにはパスワード入力が必要です

認証パスワード