Theme クラスメソッド
Theme クラスはアプリケーションにテーマを提供します。
instance($name = '_default_', array $config = array())
instance メソッドはマルチトンとして振る舞います。$name によって指定されたインスタンスを返します。
インスタンスが存在しない場合は、設定配列を使った、新しいテーマのインスタンスが生成されます。
設定が与えられなかった場合は、テーマ設定ファイルのデフォルトの設定を使った、
デフォルトのテーマインスタンスが生成されます。
静的 |
はい |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$name |
string |
'_default_'
|
テーマクラスのインスタンス名 |
$config |
array |
array()
|
テーマインスタンスの設定。インスタンスがすでに存在する場合は無視されます。 |
|
返り値 |
テーマのインスタンス |
例 |
// デフォルトのインスタンスを取得
$theme = \Theme::instance();
// カスタムインスタンスを取得
$theme = \Theme::instance(
'custom',
array(
'active' => 'custom',
'view_ext' => '.twig'
)
);
|
forge(array $config = array())
forge メソッドは新しいテーマインスタンスを返します。
設定が渡されなかった場合は、グローバル設定ファイルから読み込まれた設定が使用されます。
設定が一部だけ渡された場合は、設定ファイルのデフォルトではなくて、
はじめにで記されたデフォルトとマージされます。
静的 |
はい |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$config |
array |
array()
|
テーマインスタンスの設定 |
|
返り値 |
テーマのインスタンス |
例 |
// テーマインスタンスの取得
$theme = \Theme::forge(array(
'active' => 'custom',
'fallback' => 'default',
'view_ext' => '.html',
));
|
view($view, $data = array(), $auto_filter = null)
view メソッドは、現在のテーマからビューをロードします。
まずアクティブなテーマからロードを試みます。もしアクティブなテーマにビューが存在せず、
フォールバックテーマが定義されている場合、フォールバックテーマからビューをロードしようとします。
どちらにもビューがない場合、通常のビューの探し方で見つけたビュークラスにリクエストが渡されます。
このメソッドはビューを返すために View::forge() を使います。このため、 Parser パッケージは、テーマで定義したビューにも対応しています。
静的 |
いいえ |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$view |
string |
null
|
ビューのファイル名。ファイル名はテーマ・パスからの相対パスでないといけません。 |
$data |
array |
array()
|
値の配列 |
$auto_filter |
boolean |
null
|
自動エンコーディングをするかどうか、 true または false をセットします。デフォルトはメインの設定ファイル (app/config/config.php) で指定します。 |
|
返り値 |
新しい View オブジェクト |
例外 |
\ThemeException 、リクエストされたビューファイルが見つからない場合。 |
例 |
// デフォルト・インスタンスを取得
$theme = \Theme::instance();
// デフォルト設定で THEMEDIR.'/template/homepage.php' をロード
$view = $theme->view('template/homepage');
|
presenter($presenter, $method = 'view', $auto_filter = null, $view = null)
presenter メソッドは、渡された 文字列 $presenter に基づいて読み込みプレゼンタオブジェクトを返します。
これはプレゼンタのテーマビューを渡すために上記に記載された view のメソッドを利用します。
静的 |
いいえ |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$presenter |
string |
null
|
プレゼンタ名。 プレゼンタを参照してください。 |
$method |
string |
'view'
|
事前にビューをレンダリングするデータを処理するために呼び出されるプレゼンターインスタンスのメソッド名 |
$auto_filter |
boolean |
null
|
自動エンコーディングの設定をするために true または false に設定、メイン設定 (app/config/config.php) がデフォルト。 |
$view |
string |
null
|
カスタムビュー名、プレゼンタ名から判別できないビューがロードされる場合に利用されます。 |
|
返り値 |
新しい Presenter オブジェクト |
例外 |
\ThemeException 、リクエストされたビューファイルが見つからない場合。 |
例 |
// デフォルトのインスタンスを取得
$theme = \Theme::instance();
/**
* デフォルトの設定とともに、
* THEMEDIR.'/template/homepage.php' のビューファイルを使用し、
* APPPATH.'classes/view/template/homepage.php' で定義されたプレゼンタを読み込みます。
*/
$presenter = $theme->presenter('template/homepage');
|
asset_path($path)
asset_path メソッドは、 $path で要求された DOCROOT から相対的なアセットへのパスを返します。
設定されたアセットのフォルダがある場合は、要求された $path への URL が返されます。
静的 |
いいえ |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$path |
string |
必須 |
要求するアセット。 |
|
返り値 |
string |
例 |
// デフォルトのインスタンスを取得
$theme = \Theme::instance();
// <img src="/THEMEDIR/assets/img/test.png" /> が返されます
$img = \Html::img($theme->asset_path('img/test.png'));
|
すべての Theme クラスインスタンスへ Asset クラスのインスタンスが割り当てられていることに注意してください。 どのように Asset クラスインスタンスを利用するかについては 高度な使用法ページを参照してください。
add_path($path)
add_path メソッドは、実行時にテーマのパスを追加することができます。
静的 |
いいえ |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$path |
string |
必須 |
テーマを含むフォルダへのパス。 |
|
返り値 |
なし |
例 |
// デフォルトのインスタンスを取得
$theme = \Theme::instance();
// テーマの検索パスに 'mythemes' フォルダを追加
$theme->add_path(DOCROOT.'mythemes');
|
add_paths(array $paths)
add_paths メソッドは、実行時に複数のテーマのパスを追加することができます。
静的 |
いいえ |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$paths |
array |
必須 |
テーマを含むフォルダへのパス。 |
|
返り値 |
なし |
例 |
// デフォルトのインスタンスを取得
$theme = \Theme::instance();
// テーマの検索パスに 'mythemes' フォルダを追加
$theme->add_paths(
array(
DOCROOT.'mythemes'
),
);
|
active($theme = null)
active メソッドは、アクティブなテーマを設定することができます。これはアクティブなテーマ定義の配列を返します。
静的 |
いいえ |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$theme |
string |
null
|
アクティブなテーマの名前を選択します。 null の場合、現在のアクティブなテーマを返します。 |
|
返り値 |
array |
例外 |
\ThemeException 、リクエストされたテーマが見つからない場合。 |
例 |
// デフォルトのインスタンスを取得
$theme = \Theme::instance();
// 'darkglow' をアクティブなテーマとして設定し、その定義を返す。
$active = $theme->active('darkglow');
|
fallback($theme = null)
fallback メソッドは、フォールバックのテーマを設定することができます。これは、フォールバックテーマ定義の配列を返します。
静的 |
いいえ |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$theme |
string |
null
|
フォールバックテーマの名前を選択します。 null の場合、現在のフォールバックテーマを返します。 |
|
返り値 |
array |
例外 |
\ThemeException 、リクエストされたテーマが見つからない場合。 |
例 |
// デフォルトのインスタンスを取得
$theme = \Theme::instance();
// 'basic' をフォールバックテーマとして設定し、その定義を返す。
$fallback = $theme->fallback('basic');
|
get_template()
get_template() メソッドは、現在読み込まれているテーマのテンプレートの View インスタンスを返します。
静的 |
いいえ |
パラメータ |
なし |
返り値 |
View |
例 |
// デフォルトのインスタンスを取得
$theme = \Theme::instance();
// ページタイトルを設定するために現在のテンプレートを取得
$theme->get_template()->set('title', 'これはページタイトルです');
|
set_template($template)
set_template メソッドは、ページ用のテーマのテンプレートを設定することができます。
静的 |
いいえ |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$template |
string |
必須 |
読み込むテーマのテンプレートビューの名前。 |
|
返り値 |
View |
例 |
// デフォルトのインスタンスを取得
$theme = \Theme::instance();
// ウェブページのレイアウトのページテンプレートを設定し、ページタイトルを設定
$theme->set_template('layouts/subpage')->set('title', 'サブページタイトル');
|
get_partial($section, $view)
get_partial メソッドは、ページテンプレートの名前が付いたセクションで事前に設定されたパーシャルビューインスタンスを取得することができます。
静的 |
いいえ |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$section |
string |
必須 |
パーシャルを取得したいページテンプレートセクションの名前 |
$view |
string |
必須 |
パーシャルのために使用するビューの名前 |
|
返り値 |
View |
例 |
// デフォルトのインスタンスを取得
$theme = \Theme::instance();
/**
* 現在読み込まれているページテンプレートの 'sidebar' セクションの 'partials/menu' ビューの
* View インスタンスを取得し、変数を割り当てる。
*/
$theme->get_partial('sidebar', 'partials/menu')->set('class', 'menu green');
|
パーシャルを取得するとき、それを設定するために使用するビューの名前を使用します。 同じビューへ同じセクションを複数回にわたり割り当てた場合、
最初のものが返されるでしょう。 set_partial() へ View インスタンスを渡している場合、
'partial_' をプレフィックスとした、パーシャルの番号を使用してそれを取得することができます。
例: ビュー名 'partial_2' を使用して、 2 番目のパーシャルを取得。
set_partial($section, $view, $overwrite = false)
set_partial メソッドは、ページテンプレートの名前が付いたセクションのための部分的なビューを設定することができます。
静的 |
いいえ |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$section |
string |
必須 |
このパーシャルを追加したいページテンプレートセクションの名前 |
$view |
string|View |
必須 |
パーシャルを使用するためのビューの名前、または View オブジェクト |
$overwrite |
boolean |
false
|
falseの場合、このセクションで既に定義された任意のパーシャルにパーシャルを追加します。 true の場合、既存の内容は削除されます。 |
|
返り値 |
View |
例 |
// デフォルトのインスタンスを取得
$theme = \Theme::instance();
/**
* 現在読み込まれているページテンプレートの 'sidebar' セクションに
* 'partials/menu' ビューを割り当てます。
*
* テンプレート内で、このパーシャルは $partials['sidebar'] として echo されます。
*/
$theme->set_partial('sidebar', 'partials/menu');
|
partial_count($section)
partial_count メソッドは、指定されたセクション用に定義されたパーシャルの数を返します。
静的 |
いいえ |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$section |
string |
必須 |
確認したいパーシャルが定義されたページテンプレートセクションの名前 |
|
返り値 |
Integer |
例 |
// デフォルトのインスタンスを取得
$theme = \Theme::instance();
// sidebar に割り当てられたパーシャルの数
$partials = $theme->partial_count('sidebar');
|
has_partials($section)
has_partials メソッドは、テンプレートセクションが任意のパーシャルの定義を持つかどうかを確認することができます。
静的 |
いいえ |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$section |
string |
必須 |
確認したいパーシャルが定義されたページテンプレートセクションの名前 |
|
返り値 |
Boolean |
例 |
// デフォルトのインスタンスを取得
$theme = \Theme::instance();
// sidebar のパーシャルが定義されているか確認
if ( ! $theme->has_partials('sidebar'))
{
// サイドバーを非表示にする何らかのコード...
}
|
get_chrome($section)
get_chrome メソッドは、事前に設定されたパーシャルクロームのビューのインスタンスを取得することができます。
静的 |
いいえ |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$section |
string |
必須 |
パーシャルクロームを取得したいセクションの名前。 |
|
返り値 |
View |
例 |
// デフォルトのインスタンスを取得
$theme = \Theme::instance();
/**
* テンプレートの 'sidebar' に割り当てられたクロームのための
* View インスタンスを取得し、そこに変数を割り当てる。
*/
$theme->get_chrome('sidebar')->set('title', 'これはサイドバーです');
|
set_chrome($section, $view, $var = 'content')
set_chrome メソッドは、ページテンプレートのパーシャルセクションのためのクロムを定義することができます。
静的 |
いいえ |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$section |
string |
必須 |
このパーシャルを追加したいページテンプレートセクションの名前 |
$view |
string|View |
必須 |
パーシャルのクロームのために使用するビューの名前、または View オブジェクト |
$var |
string |
'content'
|
クロームビューがパーシャルコンテンツの出力時に利用する変数の名前 |
|
返り値 |
View |
例 |
// デフォルトのインスタンスを取得
$theme = \Theme::instance();
/**
* パーシャルセクションに丸みを帯びた角を持つ枠を与えるために現在読み込まれている
* ページテンプレートの 'sidebar' セクションに 'chrome/roundedcorners'
* ビューを割り当てます。
*
* クロムビュー内で、パーシャルの出力は $body として echo されます;
*/
$theme->set_chrome('sidebar', 'chrome/roundedcorners', 'body');
|
set_order($section, $order)
set_order メソッドは、パーシャルセクションがレンダリングされるカスタムな順序を
定義することができます。
いくつかのパーシャルが何か他に起こることに依存している場合、たとえば、パーシャルが messages を生成でき、
そしてそれらを表示する messages パーシャルを持っている場合、これは便利です。 この場合、
他のすべてより後に messages パーシャルをレンダリングしたいと思うでしょう。
定義された順序がないセクションでは他のすべてより前にレンダリングされます。
静的 |
いいえ |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$section |
string |
必須 |
順序を定義したいページテンプレートセクションの名前。 |
$order |
integer |
必須 |
パーシャルセクションの相対的な順序。 1 から 9 の間でなければらない。 |
|
例 |
// デフォルトのインスタンスを取得
$theme = \Theme::instance();
/**
* messages パーシャルが他のすべてより後にレンダリングされるようにする
*/
$theme->set_chrome('messages', 9);
|
find($theme)
find メソッドは、要求されたテーマを見つけるために定義された検索パスを繰り返し処理します。
静的 |
いいえ |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$theme |
string |
必須 |
検索するテーマの名前。 |
|
返り値 |
mixed. 見つかった場合はテーマへのパスを返し、そうでない場合は false 。 |
例 |
// デフォルトのインスタンスを取得
$theme = \Theme::instance();
// 'darkglow' テーマを探す
if ($path = $theme->find('darkglow'))
{
// テーマは $path で見つかった
}
else
{
// テーマを見つけることができなかった
}
|
all()
all メソッドは、アルファベット順にソートされたすべてのテーマパス内のすべてのテーマの配列を返します。
静的 |
いいえ |
パラメータ |
なし |
返り値 |
array |
例 |
// デフォルトのインスタンスを取得
$theme = \Theme::instance();
// インストールされているすべてのテーマを取得
$themes = $theme->all();
|
use_modules($enable = true)
use_modules メソッドは、モジュールから読み込まれたビューのプレフィックス機能を有効または無効にします。
true の場合、 Theme クラスを介してビューが読み込まれ、 (もしあれば) 現在アクティブなモジュール名が付きます。
文字列が渡された場合、それは同じようにプレフィックス付き、モジュール名とプレフィックスが付いていないビュー名の間で名前の競合を避けるために、
別のディレクトリにすべてのモジュールを格納することができます。
ビューが見つからない場合、それはプレフィックスを付けず再確認され、モジュール内からグローバルビューを利用可能にします。
どちらも存在しない場合、View クラスはビューを通常の方法を読み込むために呼び出されます。
静的 |
いいえ |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$enable |
boolean | string |
true
|
true またはフォルダ名を含む文字列の場合は機能を有効にし、false の場合は無効にする。 |
|
返り値 |
Theme |
例 |
// デフォルトのインスタンスを取得
$theme = \Theme::instance();
// モジュール 'test' 内の場合、これはテーマビュー 'test/controller/view' を読み込みます。
$info = $theme->use_modules()->set_partial('content', 'controller/view')->use_modules(false);
// モジュール 'test' 内の場合、これはテーマビュー 'modules/test/controller/view' を読み込みます。
$info = $theme->use_modules('modules')->set_partial('content', 'controller/view')->use_modules(false);
|
theme.php 設定ファイルの use_modules キーによりグローバルなデフォルト値を設定することができます。
load_info($theme = null)
load_info メソッドはテーマの完全な情報の配列を返します。
テーマが指定されていない場合、アクティブなテーマの情報が返されます。
静的 |
いいえ |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$theme |
string |
null
|
テーマの名前。 |
|
返り値 |
array |
例外 |
\ThemeException 、リクエストされたテーマが見つからない場合。 |
例 |
// デフォルトのインスタンスを取得
$theme = \Theme::instance();
// 'basic' テーマの情報配列を取得します。
$info = $theme->load_info('basic');
|
テーマ情報ファイルがない場合、require_info_file が true
に設定されている場合、このメソッドは \ThemeException を発生させ、 require_info_file が
false に設定されている場合、空の配列が返されます。
save_info($type = 'active')
save_info はテーマ情報ファイルへテーマ情報の配列の内容を
保存します。
静的 |
いいえ |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$type |
string |
'active'
|
アクティブまたはフォールバックテーマの情報を保存するかどうか。 |
|
返り値 |
boolean |
例外 |
\ThemeException 、リクエストされたテーマが見つからない場合。 |
例 |
// デフォルトのインスタンスを取得
$theme = \Theme::instance();
// active テーマの情報配列を保存します。
$info = $theme->save_info('active');
|
テーマ情報ファイルがない場合、require_info_file が true
に設定されている場合、このメソッドは \ThemeException を発生させ、 require_info_file が
false に設定されている場合、空の配列が返されます。
get_info($var, $default = null, $theme = null)
get_info メソッドはテーマ情報配列から特定の変数を返します。
テーマが指定されていない場合、アクティブなテーマの情報配列が使用されます。
静的 |
いいえ |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$var |
string |
必須 |
取得する情報変数の名前。 |
$default |
mixed |
null
|
要求された $var が存在しない場合に返る値。 |
$theme |
string |
null
|
情報ファイルが検索されるべきテーマの名前。 |
|
返り値 |
mixed |
例外 |
\ThemeException 、リクエストされたテーマが見つからない場合。 |
例 |
// デフォルトのインスタンスを取得
$theme = \Theme::instance();
// 'basic' テーマで定義した色を取得し、設定されていない場合 'blue' を利用
$var = $theme->get_info('color', 'blue', 'basic');
|
テーマを指定した場合、値がテーマ情報ファイルからロードされます。 これは、指定されたテーマは現在アクティブまたはパッシブ
テーマとして設定されている場合も同様です。それらのために、読み込まれた (そしておそらく変更された) 情報は利用されません!
set_info($var, $value = null, $type = 'active')
set_info メソッドは、アクティブまたはフォールバックテーマ情報配列内の変数を設定することができます。
テーマが指定されていない場合、アクティブなテーマの情報配列が使用されます。
静的 |
いいえ |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$var |
string |
必須 |
設定する情報変数の名前。 |
$value |
mixed |
null
|
設定する値。 |
$type |
string |
'active'
|
アクティブまたはフォールバックテーマのどちらに値を設定する必要があるか。 |
|
返り値 |
Theme |
例 |
// デフォルトのインスタンスを取得
$theme = \Theme::instance();
// フォールバックテーマを青に色を設定
$theme->set_info('color', 'blue', 'fallback');
|