YanoRyuichi.com/
Wiki
Blog
GitHub
Sandbox
開始行:
* TTSiteの基本構造 [#y90bf8a8]
** 構成 [#ab684ce2]
以下のようにヘルパーコマンドを実行する。
script/myapp_create.pl view TT TTSite
すると、以下のような構成のファイル・ディレクトリが作成さ...
lib/MyApp/View/TT.pm
root/
src/
static/
lib/
config/
main
col
url
site/
html
layout
wrapper
** lib/MyApp/View/TT.pm [#l288ab5d]
TTインスタンス生成時の設定をする。
package MyApp::View::TT;
use strict;
use base 'Catalyst::View::TT';
__PACKAGE__->config({
CATALYST_VAR => 'c',
PLUGIN_BASE => 'MyApp::TT',
INCLUDE_PATH => [
MyApp->path_to( 'root', 'src' ),
MyApp->path_to( 'root', 'lib' )
],
PRE_PROCESS => 'config/main',
WRAPPER => 'site/wrapper',
ERROR => 'error.tt2',
TIMER => 0,
DEBUG => 'undef',
});
- CATALYST_VARを指定すると、テンプレート内で、"c.config.h...
- DEBUGの指定でundefを有効にした。undef以外の指定も出来る...
** root/lib/config/main [#lff3308f]
TTインスタンス生成時のPRE_PROCESSの指定により、root/lib/c...
[% # config/main
#
# This is the main configuration template which is pro...
# any other page, by virtue of it being defined as a P...
# template. This is the place to define any extra tem...
# macros, load plugins, and perform any other template...
IF c.debug;
# define a debug() macro directed to Catalyst's log
MACRO debug(message) CALL c.log.debug(message);
END;
# define a data structure to hold sitewide data
base = c.req.base;
site = {
title => 'Example Site',
copyright => 'www.example.com',
base => c.req.base,
};
# set defaults for variables, etc.
DEFAULT
message = 'There is no message';
-%]
- 標準ではroot/lib/config/colとroot/lib/config/urlをロー...
** root/lib/site/wrapper [#pf300f72]
TTインスタンス生成時の設定でWRAPPERが指定されいるので、ま...
[% IF template.name.match('\.(css|js|txt)');
debug("Passing page through as text: $template.name");
content;
ELSE;
debug("Applying HTML page layout wrappers to $templa...
content WRAPPER site/html;
END;
-%]
- テンプレートファイルの拡張子で判断して、処理を変えてあ...
- CSSファイル等の場合、そのまま内容が出力される。HTMLファ...
- 標準では"content WRAPPER site/html + site/layout"と、si...
- ちなみに、debug()は、root/lib/config/mainで定義してある...
** root/src/***.tt2 statc/***.css [#z51b9e64]
Catalyst本体で指定したテンプレートファイルがロードされる。
終了行:
* TTSiteの基本構造 [#y90bf8a8]
** 構成 [#ab684ce2]
以下のようにヘルパーコマンドを実行する。
script/myapp_create.pl view TT TTSite
すると、以下のような構成のファイル・ディレクトリが作成さ...
lib/MyApp/View/TT.pm
root/
src/
static/
lib/
config/
main
col
url
site/
html
layout
wrapper
** lib/MyApp/View/TT.pm [#l288ab5d]
TTインスタンス生成時の設定をする。
package MyApp::View::TT;
use strict;
use base 'Catalyst::View::TT';
__PACKAGE__->config({
CATALYST_VAR => 'c',
PLUGIN_BASE => 'MyApp::TT',
INCLUDE_PATH => [
MyApp->path_to( 'root', 'src' ),
MyApp->path_to( 'root', 'lib' )
],
PRE_PROCESS => 'config/main',
WRAPPER => 'site/wrapper',
ERROR => 'error.tt2',
TIMER => 0,
DEBUG => 'undef',
});
- CATALYST_VARを指定すると、テンプレート内で、"c.config.h...
- DEBUGの指定でundefを有効にした。undef以外の指定も出来る...
** root/lib/config/main [#lff3308f]
TTインスタンス生成時のPRE_PROCESSの指定により、root/lib/c...
[% # config/main
#
# This is the main configuration template which is pro...
# any other page, by virtue of it being defined as a P...
# template. This is the place to define any extra tem...
# macros, load plugins, and perform any other template...
IF c.debug;
# define a debug() macro directed to Catalyst's log
MACRO debug(message) CALL c.log.debug(message);
END;
# define a data structure to hold sitewide data
base = c.req.base;
site = {
title => 'Example Site',
copyright => 'www.example.com',
base => c.req.base,
};
# set defaults for variables, etc.
DEFAULT
message = 'There is no message';
-%]
- 標準ではroot/lib/config/colとroot/lib/config/urlをロー...
** root/lib/site/wrapper [#pf300f72]
TTインスタンス生成時の設定でWRAPPERが指定されいるので、ま...
[% IF template.name.match('\.(css|js|txt)');
debug("Passing page through as text: $template.name");
content;
ELSE;
debug("Applying HTML page layout wrappers to $templa...
content WRAPPER site/html;
END;
-%]
- テンプレートファイルの拡張子で判断して、処理を変えてあ...
- CSSファイル等の場合、そのまま内容が出力される。HTMLファ...
- 標準では"content WRAPPER site/html + site/layout"と、si...
- ちなみに、debug()は、root/lib/config/mainで定義してある...
** root/src/***.tt2 statc/***.css [#z51b9e64]
Catalyst本体で指定したテンプレートファイルがロードされる。
ページ名: