Catalyst でテンプレートをPCとモバイルで分ける
にはどうするのが良いのだろう?と思って、使用例を調べました。
MobileCat の場合
http://mobilecat.koneta.org/static/doc/
TTのWRAPPERを2段構えにしている。
id:orangevtr さんの場合
http://d.hatena.ne.jp/orangevtr/20081116/1226817452
View::TT の process() をオーバーライドして、テンプレート探索パスを変えている。
自分のニーズとしては、PCとモバイルで結構デザインが変わる可能性があるので、後者がよさそうです。
で、Catalyst::View::TT のマニュアルを読んでみたらコントローラ内からも INCLUDE_PATH を追加できるようなので、process() 上書きでなくこっちの方法にしてみることに。
http://search.cpan.org/~bobtfish/Catalyst-View-TT-0.34/lib/Catalyst/View/TT.pm#DYNAMIC_INCLUDE_PATH
こんな感じに Root.pm の end に書けば、おおむね同じことかな、と。
(携帯判定には Catalyst::Plugin::MobileAgent を使います)
sub end : ActionClass('RenderView') { my ( $self, $c ) = @_; # pc と mobile でテンプレートパス切り替え if ($c->request->mobile_agent->is_non_mobile) { $c->stash->{additional_template_paths} = [$c->config->{root} . '/pc']; } else { $c->stash->{additional_template_paths} = [$c->config->{root} . '/mobile']; } }
他に現在のスタンダード的手法があったら教えてほしいのココロ。