PerlさんPerlくん
[perl][module][TT] TTのTIPS
最終更新:
atwikimyj
-
view
emplate-Toolkitでのはまり、TIPSを記録する。
◆リンク集
TT超入門。これで基本がわかった
TTで使える関数プチ一覧。なんでもできそうだ。
http://hwat.sakura.ne.jp/hpod/200604/06-140134/
http://hwat.sakura.ne.jp/hpod/200604/06-140134/
- DBマガジンのサンプルプログラム
紙だけど、相当参考になった。
◆TIPS
(1)インストールにきをつけろ
perlのサンプルスクリプト上では'template'というモジュール名になっているので
PPMで'template'と指定してインストール。しかしこれはTTとは別のモジュールなのだ。
本当は'template-toolkit'でsearchして、この名前でインストールする必要があった、、、。
perlのサンプルスクリプト上では'template'というモジュール名になっているので
PPMで'template'と指定してインストール。しかしこれはTTとは別のモジュールなのだ。
本当は'template-toolkit'でsearchして、この名前でインストールする必要があった、、、。
(2)イテレイト型のオブジェクトをそのままTTにぶんなげる
$Sale_prod_list = MAGCLASS::ObjectsTable
-> search( [ $criteria1 , $criteria2 , $criteria3, $criteria4 ],{ order_by => 'prod_sellrank' } );
こんなふうに雑誌情報のオブジェクトを取得して、
-> search( [ $criteria1 , $criteria2 , $criteria3, $criteria4 ],{ order_by => 'prod_sellrank' } );
こんなふうに雑誌情報のオブジェクトを取得して、
my $template = Template->new;
my $output;
$template->process( 'teiki_make_index.html',{ Sale_prod_list => $Sale_prod_list } ,$output);
my $output;
$template->process( 'teiki_make_index.html',{ Sale_prod_list => $Sale_prod_list } ,$output);
こうする。複数の雑誌情報を持つオブジェクトが teiki_make_index.html に投げられる。
これを受け入れる書式は
[% WHILE ( sp = Sale_prod_list.next) -%]
[% IF sp.prod_price != '' %]
/価格:[% sp.prod_price %]円
[% END %]
[% IF sp.prod_toku != '' %]
/(特典あり)
[% END %]
これを受け入れる書式は
[% WHILE ( sp = Sale_prod_list.next) -%]
[% IF sp.prod_price != '' %]
/価格:[% sp.prod_price %]円
[% END %]
[% IF sp.prod_toku != '' %]
/(特典あり)
[% END %]
[% END %]
こんな感じ。まずWHILEでperlから渡されたSale_prod_listを受けるわけだけど
1つ1つ順番に読み込むようにSale_prod_list.nextと記述し、その1つ1つの
オブジェクトはsp = Sale_prod_list.nextとすることでspに入る。
sp.prod_noなどとすることでオブジェクト内のハッシュを読み取れる。
こんな感じ。まずWHILEでperlから渡されたSale_prod_listを受けるわけだけど
1つ1つ順番に読み込むようにSale_prod_list.nextと記述し、その1つ1つの
オブジェクトはsp = Sale_prod_list.nextとすることでspに入る。
sp.prod_noなどとすることでオブジェクト内のハッシュを読み取れる。
注意点:
・WHILEやENDなどの書式は必ず大文字
・条件式は必ずENDで閉めよう
・WHILEやENDなどの書式は必ず大文字
・条件式は必ずENDで閉めよう
(3)作製されたHTMLについて
$template->process( 'teiki_make_index.html',{ Sale_prod_list => $Sale_prod_list } ,$output);
と記述すると、$outputに作製されたHTMLが入る。
(テンプレート ,{ エイリアス=> オブジェクト } , $出力先変数)
という書式。注意点として、$outputではだめで、$outputとしなければならない)
また、出力先変数を省略して
$template->process( 'teiki_make_index.html',{ Sale_prod_list => $Sale_prod_list } );
とすると自動的にprintされる。
$template->process( 'teiki_make_index.html',{ Sale_prod_list => $Sale_prod_list } ,$output);
と記述すると、$outputに作製されたHTMLが入る。
(テンプレート ,{ エイリアス=> オブジェクト } , $出力先変数)
という書式。注意点として、$outputではだめで、$outputとしなければならない)
また、出力先変数を省略して
$template->process( 'teiki_make_index.html',{ Sale_prod_list => $Sale_prod_list } );
とすると自動的にprintされる。
以下いろんなサイトからのメモ
■HTMLファイルのエスケープ
HTMLタグのエスケープしろという命令をテンプレートに記述できます。フィルター機能についてはTemplate Toolkit Manual: Filtersに詳しく書いてありますが、例えば、
■HTMLファイルのエスケープ
HTMLタグのエスケープしろという命令をテンプレートに記述できます。フィルター機能についてはTemplate Toolkit Manual: Filtersに詳しく書いてありますが、例えば、
[% foo | html %]でfooの中身のHTMLタグをエスケープして出力してくれますし、 [% bar | html_line_break %]