2009-01-25
template toolkitでWRAPPERするファイルをデフォルトで定義したり条件によって別のファイルを指定したりする
before
header.ttに
<html> 〜〜〜〜〜〜〜〜 </html
とか書いて、全ttに
[%- WRAPPER header.tt -%]
とかいちいち書く
after
wrapper.ttを作成、
[%- app_name = 'アプリの名前' -%]
[%- IF template.name.match('^/admin') %]
[% base_title = 'uriが/adminから始まるのでここは管理画面的です' %]
[%- INCLUDE admin/default/header.tt %]
[%- ELSE %]
[% base_title = 'ユーザ画面です' %]
[%- INCLUDE header.tt %]
[%- END %]
header.ttには
[% content -%]
と書いて、各ttでは何も書かずに済むようになった。この[% content -%]に各ttの中身が入る。
URIマッチがアレなのは置いといて。/adminhogeとかでも引っかかる、とか。ちゃんとしたければ変数stashするなり、何かして。
ここでは条件により読み込むヘッダを変えているが、普通はwrapper.ttに [% content -%]
を書いてもいい。
let's do it
- myapp.yaml
View::TT: INCLUDE_PATH: - __path_to(root/template)__ - __path_to(root/template/default)__ TEMPLATE_EXTENSION: '.tt' PRE_PROCESS: macro.txt DEBUG: 1 ABSOLUTE: 1 WRAPPER: __path_to(root/template/default/wrapper.tt)__
WRAPPER: __path_to(root/template/default/wrapper.tt)__
がデフォルトのWRAPPERファイルを指定するところ。
こうしとけば、普段は全てのttはroot/template/default/wrapper.ttをWRAPPERする。
URIが /admin から始まれば、root/template/admin/default/header.ttをWRAPPERする。
例えば各ページでタイトルを動的に変更する
タイトルタグに[% title %]とか書いて、コントローラでstashしてもできるけど、ビューの設定がコントローラ依存になる。
<title>[% app_name %] - [% page_title ? page_title : base_title %]</title>
こうすれば、app_nameは全ページで共通。page_titleがあればそれを、なければbase_titleを表示する。
base_titleは各ページのttでSETすればいい。という。
これも柔道家に教えてもらった。感謝。
神が居なくなってから、柔道家に頼りっぱなしである。
コメントを書く
トラックバック - http://d.hatena.ne.jp/foosin/20090125/1232860014
リンク元
- 19 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&hs=ayL&q=root:+__path_to(*)__&btnG=検索&lr=lang_ja&aq=f&oq=
- 14 http://d.hatena.ne.jp/a666666/20090617/1245225780
- 12 http://b.hatena.ne.jp/entry/d.hatena.ne.jp/foosin/20090125/1232860014
- 12 http://b.hatena.ne.jp/t/catalyst
- 9 http://b.hatena.ne.jp/entry/11884925/template toolkitでWRAPPERするファイルをデフォルトで定義したり条件?%
- 8 http://reader.livedoor.com/reader/
- 8 https://www.google.co.jp/
- 7 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=4&ved=0CEgQFjAD&url=http://d.hatena.ne.jp/foosin/20090125/1232860014&ei=GcVyT76AF4-NmQX1ruDIDw&usg=AFQjCNHK5l_m5_il8fPhD7k10Vt0_ISSLA&sig2=VEm1uKMf2v61xa32KV3QzA
- 5 http://www.blogpet.net/viewer?url=http://d.hatena.ne.jp/foosin/20090125/1232860014
- 4 http://www.google.co.jp/search?hl=ja&client=firefox-a&channel=s&rls=org.mozilla:ja:official&hs=W14&q=vi+検索 or&btnG=検索&lr=
