@kyanny's blog

流行はつねに前進していく。そして、精神の偽りの自由が絶えずせり上がっていく - ロマン・ロラン

Template Toolkit の WRAPPER ディレクティブ (auto wrapper) を使う

サンプルを書いて github に置いた。ので、そのことを忘れないようにメモ。

GitHub - kyanny/template-toolkit-auto-wrapper-example: Template Toolkit (tt2) WRAPPER (auto wrapper) examples.

できることできないこと

  • 複数のラッパーを入れ子にできる。 WRAPPER ディレクティブを使う場合は・・・書き方わすれた。 auto wrapper を使う場合は Template->new({WRAPPER => ['outer.tt', 'inner.tt']}); とする。
  • ラッパーじゃない普通のテンプレート ($tt->process で指定するやつ) からは META と普通の変数で値をラッパーのテンプレートに渡せる
  • META は上書きできない。 $tt->process('index.tt') としたら、 index.tt 内に書いた META の中身は参照できるが inner.tt 内に META を書いても outer.tt から参照できない (←本当か??でも自分で試したときはできなかった。。)
  • 普通の変数は上書きできる。 $tt->process('index.tt') として index.tt 内で [% SET message = 'hello' %] しておいてから inner.tt で [% SET message = 'goodbye' %] とすると、 outer.tt 内で参照したとき goodbye になる (←これも書いててあまり自信ない、根拠が・・・けど試したらそうなった)