28February
EthnaでLayoutView
今週もEthnaネタを。
ある人がすごくお待ちかねのネタだそうです。
これは結構いろんな人がやっているようです。その一つということで。
こちらになります。
使い方は続きをみてね。
2006年夏頃からのEthnaはプロジェクトジェネレート時にアプリケーション固有のViewClassを作成するので、それの基底クラスを変更することにします。
1カ所、実際のコンテンツが入る箇所に
簡単にテンプレートを書くと、、、
また、ViewClassの動作中にレイアウトを変更したい場合は setLayoutメソッドがありますのでそちらをご利用ください。
また、レイアウトファイルの置き場所ですが、template/<lang>/layoutがデフォルトです。
変更したい場合は、 $_layout_dir プロパティまたは setLayoutDirectory メソッドを利用してください。
言語に問わずレイアウトが統一の場合の例としては、
これで同じようなテンプレートのコピペが減ってよりDRYなシステムになるでしょう!
感想・バグなどございましたらぜひコメント等でご連絡ください。
ある人がすごくお待ちかねのネタだそうです。
概要
EthnaのViewをRailsとかにあるLayoutに対応させます。これは結構いろんな人がやっているようです。その一つということで。
Source
http://bobpp.as-roma.com/svn/ethnaLibs/trunk/projBop_Layout_ViewClass.phpこちらになります。
使い方は続きをみてね。
How to Load
libsディレクトリなどに置いてください。include_onceできればどこでもいいですが。2006年夏頃からのEthnaはプロジェクトジェネレート時にアプリケーション固有のViewClassを作成するので、それの基底クラスを変更することにします。
require_once 'libs/projBop_Layout_ViewClass.php';
class AppID_ViewClass extends projBop_Layout_ViewClass { ... }
このようにしていけばいいかと思います。Layoutファイルの書き方
レイアウトファイルも通常のテンプレートとあまり変わりません。1カ所、実際のコンテンツが入る箇所に
{include file=$app.contents_tpl_path}
と記述する必要があります。簡単にテンプレートを書くと、、、
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Test!</title>
</head>
<body>
<h1>Test Site!</h1>
{include file=$app.contents_tpl_path}
</body>
</html>
このような記述になります。Layoutの宣言
Layoutの宣言は $_layout プロパティで行います。なので基本的なレイアウトがある場合は、
class AppID_ViewClass extends projBop_Layout_ViewClass {
var $_layout = 'application';
...
}
と記述しておけばいいと思います。また、ViewClassの動作中にレイアウトを変更したい場合は setLayoutメソッドがありますのでそちらをご利用ください。
$this->setLayout("hoge");
このように利用します。また、レイアウトファイルの置き場所ですが、template/<lang>/layoutがデフォルトです。
変更したい場合は、 $_layout_dir プロパティまたは setLayoutDirectory メソッドを利用してください。
言語に問わずレイアウトが統一の場合の例としては、
// Class定義で決める場合は
class AppID_ViewClass extends projBop_Layout_ViewClass {
var $_layout_dir = "template/layout";
...
}
// 動的に決定する場合などは
$this->setLayoutDirectory("template/layout");
このように変更することができます。Done.
このようにレイアウトファイルとレイアウトの設定ができればレイアウトを取り込んで出力することになります。これで同じようなテンプレートのコピペが減ってよりDRYなシステムになるでしょう!
感想・バグなどございましたらぜひコメント等でご連絡ください。

Trackback
Comment
コメントがありません