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_filetrue に設定されている場合、このメソッドは \ThemeException を発生させ、 require_info_filefalse に設定されている場合、空の配列が返されます。

save_info($type = 'active')

save_info はテーマ情報ファイルへテーマ情報の配列の内容を 保存します。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$type string
'active'
アクティブまたはフォールバックテーマの情報を保存するかどうか。
返り値 boolean
例外 \ThemeException 、リクエストされたテーマが見つからない場合。
// デフォルトのインスタンスを取得
$theme = \Theme::instance();

// active テーマの情報配列を保存します。
$info = $theme->save_info('active');

テーマ情報ファイルがない場合、require_info_filetrue に設定されている場合、このメソッドは \ThemeException を発生させ、 require_info_filefalse に設定されている場合、空の配列が返されます。

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');