Catalyst::View::Xslateで、モバイル(ガラケー)サイトを作る為のはじめの一歩

もはやスマホだけ対応しとけばいいんじゃないか、って気もしますが・・。

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=””にしたりとか、その他いろいろできるかなー?

ま、はじめの一歩って事で。