Perlプログラムに関する各種メモ書き:タグ「TemplateToolkit」での検索

TemplateToolkitで FOREACHELSE(foreachに渡す配列にデータが存在なかったときの処理)を記述する

PHPのテンプレートエンジン Smarty には foreachelse という便利な構文があります。

{ foreach from=$item_loop key="key" item="value"}
	id: {$value.id}
{foreachelse}
	データがありません
{/foreach}

これをTemplateToolkitで実現するには

[%FOREACH value=itemloop%]
	id:[%value.id%]
[%END%]
[%UNLESS itemloop.0%]データがありません[%END%]

と記述します。



No.406
02/01 10:46

edit

TemplateToolkit

TemplateToolkitのFillinformプラグイン

HTML::Fillinformは有名ですが、TTで使えるプラグインがあるみたいです。

http://search.cpan.org/~miyagawa/Template-Plugin-FillInForm-0.04/

No.404
03/16 13:52

edit

TemplateToolkit

Template Toolkit 使用する際の注意点

Perlのテンプレートエンジン「Template Toolkit」を使用する際の注意点をメモ。

■ アンダースコアで始まる変数は使えない。
アンダースコアで始まる変数(例:_test)はTTでは使用できないみたいです。注意!


No.392
07/24 13:58

edit

TemplateToolkit

【Template-Toolkit】で特定のタグのエスケープをやめたい

以下のモジュールを使用します。
http://search.cpan.org/dist/Template-Plugin-TagRescue/

使い方は
  [% USE TagRescue %]
と最初に書いて
  [% FILTER html_except_for('b') -%]
Bold! and Italic!

[%- END %]
# Output:
# Bold! and Italic!

  [% 'Bold! and Italic!
' | html_except_for('i','br') %]
# Output:
# Bold! and Italic!

  [% taglist = ['b', 'br']; 'Bold! and Italic!
' | html_except_for(taglist) %]
# Output:
# Bold! and Italic!


No.318
11/25 13:52

edit

TemplateToolkit

【Template-Toolkit】と【HTML::Template】のテンプレートファイル変換方法

【Template-Toolkit】(以下TT)をメインで使っていても、サーバ上のPerlのバージョンが低いとどうしても【HTML::Template】を使わざるをえなくなるときがある。

逆に普段【HTML::Template】だがTTの方が便利だという噂を聞いて使ってみたいという人がいるかもしれない…。

という事で TT <-> HTML::Template のテンプレートファイルの変換方法。

■1.変数

TTのテンプレートファイル内での変数記述方法は

[%data%]

HTML::Templateのテンプレートファイル内での変数記述方法は

%data%

簡単。(両サイドのカッコをトルだけ)

(※注 HTML::Template をnew するときに『vanguard_compatibility_mode => 1』とする必要がある。)


■2.ループ

TTのテンプレートファイル内でのループ記述方法は

[%FOREACH value=itemloop%]
[%value.data%]
[%END%]

HTML::Templateのテンプレートファイル内でのループ記述方法は

<!--tmpl_loop name="itemloop"-->
%data%
<!--/tmpl_loop-->

簡単!。


■3.条件分岐

HTML::Templateの条件分岐は値が「TRUE」か「FALSE」しか判断できないので

TTでこれ以外の条件分岐を行っているときはあきらめる。。。

「TRUE」「FALSE」でのみ条件分岐を行っているときは

TTのテンプレートファイル内での条件分岐記述方法は

[% IF file_1 != '' %]
<img src="[%file_1%]">
[% END %]

HTML::Templateのテンプレートファイル内での条件分岐記述方法は

<!--TMPL_IF NAME="file_1"-->
<img src="%file_1%">
<!--/TMPL_IF-->
No.310
09/20 16:45

edit

TemplateToolkit
HTML::Template

【Template-Toolkit】で[FOREACH]の繰り返し回数を取得する

Template-Toolkit(以下TT)での

一般的なループのさせ方は

[%FOREACH value=loop%]
 名前は:[%value.name%]です。
[%END%]

このループのループ回数を利用して何か処理をしたい場合は予約オブジェクト「loop」というのが使用できる。

 loop.size  リストの要素数

 loop.max  最後の要素のインデックス (size - 1)

 loop.index  0からmax()のうちの、現在の繰り返し処理のインデックス

 loop.count  1からsize()のうちの、現在の繰り返し処理のカウント(index() + 1)

 loop.first  現在の処理が一番最初の処理であれば真

 loop.last  現在の処理が一番最後の処理であれば真

 loop.prev  リストのうち、一つ前のアイテムを返す

 loop.next  リストのうち、一つ次のアイテムを返す

では、この変数を用いて「3回繰り返すごとに改行タグを入れる」といった

処理はどう行うかというと

[%FOREACH value=loop%]
 名前は:[%value.name%]です。
  [%IF (loop.count mod 3)==0 %]<br>[%END%]
[%END%]

※注意

○  [%IF (loop.count mod 3)==0 %]
×  [%IF (loop.count%3)==0 %]

なので注意。

No.299
02/01 10:43

edit

TemplateToolkit

No.260
02/01 10:43

edit

TemplateToolkit

Template-Toolkit 関連ページ

便利なプラグイン:

  • 指定文字数以降を省略

Template::Plugin::TruncateJp

http://search.cpan.org/search?query=TruncateJp&mode=all

  • HTMLタグの除去

Template::Plugin::Filter::HTMLScrubber

  • URLにリンクをはる

Template::Plugin::Clickable

  • テンプレートから任意の箇所を抜き出す

Template::Extract

なお文字列の連結はダブルクォーテーションでかこう。

[%hoge%]-----[%fuga%]
↓
[% "$hoge-----$fuga" %]

ダウンロードはThe CPAN Search Site - search.cpan.orgからどうぞ


参考:

(フィルタ機能一覧)http://www.template-toolkit.org/docs/default/Manual/Filters.html

(配列へのアクセス)http://www.drk7.jp/MT/archives/000867.html

参考:http://cyberlib.enterbrainz.com/1167736804.html

No.136
03/26 13:49

edit

TemplateToolkit