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=””にしたりとか、その他いろいろできるかなー?
ま、はじめの一歩って事で。