Catalyst::View::Xslateで、モバイル(ガラケー)サイトを作る為のはじめの一歩
2011年5月19日
もはやスマホだけ対応しとけばいいんじゃないか、って気もしますが・・。
HTTP::MobileAgentは、Catalyst::Plugin::MobileAgentを使うからいいとして、、
Encode::JP::Mobileとか、HTML::DoCoMoCSSとかを使う為にゴニョゴニョしてみた。
まずは、Helperで、Viewの作成。
script/myapp_create.pl view Xslate Xslate bridge=TT2Like syntax=TTerse
↑で、できたXslate.pmに少々追記。
MyApp/View/Xslate.pm
package MyApp::View::Xslate; use Moose; extends 'Catalyst::View::Xslate'; has '+syntax' => ( default => 'TTerse' ); has '+module' => ( default =>sub{ [ 'Text::Xslate::Bridge::TT2Like' ] } ); # ここから追加( Catalyst::View::Xslate からコピペしただけですが・・) override 'process' =>sub{ my ($self, $c) = @_; my $stash = $c->stash; my $template = $stash->{template} || $c->action . $self->template_extension; if (! defined $template) { $c->log->debug('No template specified for rendering') if $c->debug; return 0; } my $output = eval { $self->render( $c, $template, $stash ); }; if (my $err = $@) { return $self->_rendering_error($c, $err); } my $res = $c->response; if (! $res->content_type) { $res->content_type('text/html; charset=' . $self->content_charset); } $res->body( encode($self->content_charset, $output) ); return 1; } 1;
processをoverrideするとrender後の$outputにアクセスできるんで、
携帯の絵文字を置換したり、cssをstyle=””にしたりとか、その他いろいろできるかなー?
ま、はじめの一歩って事で。