簡単なサイトアプリケーション
TTSiteヘルパを使用して、簡単なサイトを構築する例を紹介します。
アプリケーションスケルトン作成
最初にSiteSampleアプリケーションを作成します。今回のサンプルではTTSiteヘルパクラスを使用してビューを作成します。またコード類はすべてUTF-8で保存しています。
$ catalyst.pl SiteSample $ ./SiteSample/script/sitesample_create.pl view TT TTSite
今回用意するアクションでは、単純にメッセージを表示するだけなので、詳細は記事添付のサンプルファイルをご覧ください。
メニューの作成
ヘッダ部分に各アクションへのリンクを表示するようにします。また自分自身が表示されている場合にはリンクを作成しないようにします。
メニューの一覧を定義する、config/menulistを作成し、config/mainから読み込むようにします。
[% site.menulist = [ 'home', 'service', 'about', 'contact' ] -%]
サイト全体から参照される配列として、site.menulistを定義しています。ここでは、4つのメニューを登録しています。このメニューに対応するURLをconfig/urlにも登録しています。このメニューはヘッダ部で表示するので、site/headerファイルに次のような処理を実装しました。
<!-- BEGIN site/header -->
<h1 class="title">[% template.title or site.title %]</h1>
<div id="menubar" align="center">
[% # (1)FOREACHでsite.menulistに登録された値を1つずつ取得 %]
[% FOREACH menu = site.menulist %]
[% IF menu == template.menu %]
[% # (2)表示されているテンプレートと同じならば文字列のみを表示 %]
<span>[% menu %]</span>
[% ELSE %]
[% # (3)表示されているテンプレート以外ならばリンクを作成 %]
<a href="[% site.url.$menu %]">[% menu %]</a>
[% END # end of IF %]
[% END # end of FOREACH %]
</div>
<!-- END site/header -->
(1)のFOREACHでsite.menulistに登録された配列の値を1つずつ取得し、(2)で現在表示されているテンプレートと同じであればメニュー名をそのまま表示し、(3)で表示されているテンプレート以外であれば、リンクを作成しています。
このとき、site.urlに登録されたハッシュからメニュー名をキーとしてURLを取得しています。
ページテンプレート
各ページのテンプレートは次のように定義しました。
[% META title = 'About' %] [% META menu = 'about' %] <p>SiteSampleのAbout画面</p>
METAディレクティブで、メニューを識別するための名前を「menu」という名前で登録しています。ここで登録した名前は上記のsite/headerで、現在表示されているメニューかどうかを判定するのに使っています。
サンプルアプリケーションの実行
それでは作成したSiteSampleアプリケーションを実行させてみましょう。次のURLをWebブラウザで表示させてください。
http://<ホスト名またはIPアドレス><:Port>/about
まとめ
本記事では、CatalystのビュークラスであるCatalyst::View::TTを例に取り、統一的なサイトを構築する方法を紹介しました。
これでCatalystの主要なクラスについては紹介できたと思います。さて、次回ではCatalystでテストを行う方法についてサンプルを交えつつ紹介していく予定です。

