FuelPHP-テーマ
テーマは、アプリケーションの複数のルックアンドフィールを有効にするために使用されます。これは、ユーザー/開発者がアプリケーションの機能を妨げることなく、アプリケーションのルックアンドフィールを変更するためのオプションを提供します。アプリケーションには、1つ以上のテーマを含めることができます。各テーマは独自のフォルダーにあります。この章では、テーマの作成方法を学びましょう。
テーマ構成
FuelPHPは、テーマ用に個別の構成ファイルを提供します。 fuel/app/config/themes.php。テーマに関連するすべての設定は、このファイルで構成されます。主なテーマ設定は以下のとおりです。
active −アクティブなテーマの名前
fallback −アクティブなテーマが見つからない場合のフォールバックテーマの名前
paths −テーマを検索および検索するためのパスの配列
assets_folder−通常、アセットは、Web経由でアクセスできるように、DOCPATH内にある必要があります。DOCPATH内のテーマのアセットフォルダーを参照します
view_ext −テーマのビューファイルの拡張子
info_file_name −テーマに関する拡張情報を含むファイル
require_info_file −テーマ情報ファイルinfo_file_nameが必要かどうか
use_modules −現在のモジュールを使用するかどうか
テーマファイルの簡単な設定は次のとおりです。
<?php
return array (
'active' => 'tpthemes',
'fallback' => 'tpthemes',
'paths' => array (
APPPATH.'themes',
),
'assets_folder' => 'assets',
'view_ext' => '.html',
'require_info_file' => false,
'info_file_name' => 'themeinfo.php',
'use_modules' => false,
);
ここで設定しました、
- tpthemesとしてのアクティブおよびフォールバックテーマの名前
- テーマフォルダーのパス(fuel / app / themes /)
- / public / assets / tpthemes /としてのアセットフォルダーのパス
テーマクラス
設定が完了したら、FuelPHPが提供するThemeクラスを使用して、テーマの機能を実行できます。この章のThemeクラスで使用できるメソッドについて教えてください。
インスタンス
インスタンスメソッドを使用すると、新しいテーマを作成できます。次の2つのパラメータがあります。
$name −テーマの名前(オプション)
$config −テーマ構成配列(構成セクションに表示されているものと同じ)
両方のパラメーターはオプションです。パラメーターが指定されていない場合、構成ファイルからデフォルトのテーマを取得しようとします。テーマ名が指定されている場合、構成ファイルから他の設定を取得しようとします。構成も指定されている場合は、構成ファイルからの設定ではなく、ユーザー指定の設定が使用されます。
$theme = \Theme::instance();
$theme = \Theme::instance('tpthemes');
$theme = \Theme::instance ('mytheme', array (
'active' => 'mytheme', 'view_ext' => '.php'));
フォージ
forgeはインスタンスに似ていますが、構成配列しかない点が異なります。
$theme = \Theme::forge (array(
'active' => 'tpthemes',
'fallback' => 'tpthemes',
'view_ext' => '.php',
));
見る
ビューメソッドは、 View::forge()バックグラウンドで。どちらのAPIも似ていますが、viewメソッドがthemesフォルダー(fuel / app / views /フォルダーではなくfuel / app / themes / tpthemes /)内のビューファイルを検索する点が異なります。
$theme = \Theme::instance();
$view = $theme->view('template/index');
// *fuel/app/themes/tpthemes/template/index.php
プレゼンター
プレゼンターメソッドは Presenter::forge()バックグラウンドで。両方のAPIは類似していますが、presenterメソッドがthemesフォルダー内のビューファイルを検索します。fuel/ app / views /フォルダーではなくfuel / app / themes / tpthemes /です。
$theme = \Theme::instance();
$presenter = $theme->presenter('template/index');
Asset_path
Asset_pathメソッドは、現在選択されているテーマに関連して要求されたアセットへのパスを返します。
$theme = \Theme::instance();
// public/assets/tpthemes/css/style.css
$style = \Html::css($theme->asset_path('css/style.css'));
add_path
add_pathメソッドを使用すると、実行時にテーマパスを追加できます。
$theme = \Theme::instance();
$theme->add_path(DOCROOT.'newthemes');
add_paths
add_pathsメソッドを使用すると、実行時に複数のテーマパスを追加できます。
$theme = \Theme::instance();
$theme->add_path(DOCROOT.'newthemes');
アクティブ
activeメソッドを使用すると、アクティブなテーマを設定できます。
$theme = \Theme::instance();
$active = $theme->active('newtheme');
後退する
フォールバックメソッドを使用すると、フォールバックテーマを設定できます。
$theme = \Theme::instance();
$fallback = $theme->fallback('custom');
get_template
get_templateメソッドは、現在ロードされているテーマテンプレートのViewインスタンスを返します。
$theme = \Theme::instance();
$theme->get_template()->set('body', 'Theme can change the look and feel of your app');
set_template
set_templateメソッドを使用すると、ページのテーマテンプレートを設定できます。
$theme = \Theme::instance();
$theme->set_template('layouts/index')->set('body', 'set theme template');
見つける
findは、テーマへのパスが見つかった場合はtrueを返し、それ以外の場合はfalseを返します。
$theme = \Theme::instance();
$path = $theme->find('newtheme')
すべて
allメソッドは、すべてのテーマパスのすべてのテーマの配列を返します。
$theme = \Theme::instance();
$themes = $theme->all();
情報を取得
get_infoメソッドは、テーマ情報配列から特定の変数を返します。テーマが指定されていない場合は、アクティブなテーマの情報配列が使用されます。
$theme = \Theme::instance();
$var = $theme->get_info('color', 'green', 'newtheme');
ここで、色を取得するメソッドは「newtheme」で定義されています。定義されていない場合は、デフォルトの色として「緑」が使用されます。
set_info
set_infoメソッドは、アクティブテーマまたはフォールバックテーマに変数を設定します。
$theme->set_info('color', 'green', 'fallback');
set_partial
set_partialメソッドを使用すると、ページテンプレートの名前付きセクションのビューパーシャルを設定できます。通常、HMVCコールを介して行われます。
$theme = \Theme::instance();
$theme->set_template('layouts/homepage');
$theme->set_partial('navbar', 'homepage/navbar');
get_partial
get_partialメソッドを使用すると、ページテンプレートの名前付きセクションで以前に設定されたパーシャルのビューインスタンスを取得できます。
$theme = \Theme::instance();
$theme->set_partial('sidebar', 'partials/menu');
$theme->get_partial('sidebar', 'partials/menu')->set('class', 'menu green');
実例
従業員アプリケーションにテーマサポートを追加しましょう。
Step 1 −次の内容の新しいテーマ構成ファイルfuel / app / config /theme.phpを追加します。
<?php
return array (
'active' => 'tpthemes',
'fallback' => 'tpthemes',
'paths' => array (APPPATH.'themes', ),
'assets_folder' => 'assets',
'view_ext' => '.html',
'require_info_file' => false,
'info_file_name' => 'themeinfo.php',
'use_modules' => false,
);
Step 2 −テーマtpthemesの新しいアセットフォルダーpublic / assets / tpthemes / cssを追加します。
cd /go/to/app/root/path
mkdir -p public/assets/tpthemes/css
Step 3 −最新のブートストラップをダウンロードし、bootstrap.min.cssをpublic / assets / tpthemes / cssの下に配置します
Step 4 −新しいフォルダーtpthemesをfuel / app / themesフォルダーの下に追加します。
cd /go/to/app/root/path
mkdir -p fuel/app/themes/tpthemes
Step 5 −新しいレイアウトテンプレートbootstrap.htmlをfuel / app / themes / tpthemes / layout /の下に追加し、次のコードを追加します。
<!DOCTYPE html>
<html lang = "en">
<head>
<title>Theme example</title>
<meta charset = "utf-8">
<meta name = "viewport" content = "width = device-width, initial-scale = 1">
<!-- Bootstrap core CSS -->
<?php echo \Theme::instance()->asset->css('bootstrap.min.css'); ?>
</head>
<body>
<?php echo $header; ?>
<div class = "container">
<div class = "row">
<div class = "col-sm-12">
<?php echo $content; ?>
</div>
</div>
</div>
</body>
</html>
ここでは、テーマインスタンスとアセットメソッドを使用して、ブートストラップファイルのパスを取得しました。ヘッダーとコンテンツの2つの変数を定義しました。header ヘッダーの詳細を動的に設定するために定義されています。 content ページの実際のコンテンツを動的に設定するために定義されています。
Step 6 −次のように、新しいヘッダーテンプレートheader.phpをfuel / app / themes / tpthemes / partialsに追加します。
<div class = "jumbotron text-center">
<h1>Theme support in fuelphp</h1>
<p>bootstrap based template</p>
</div>
Step 7 −新しいコントローラーを作成します。 ThemeSample Fuel / app / classes / controller /themesample.phpおよび action 次のようにaction_indexで。
<?php
class Controller_ThemeSample extends \Controller {
public function before() {
$this->theme = \Theme::instance();
$this->theme->set_template('layouts/bootstrap');
$header = $this->theme->view('partials/header');
$this->theme->get_template()->set('header', $header);
}
public function action_index() {
$content = $this->theme
->view('themesample/index')
->set('message', 'This data comes from action page');
$this->theme
->get_template()
->set('content', $content);
}
public function after($response) {
if (empty($response) or ! $response instanceof Response) {
$response = \Response::forge(\Theme::instance()->render());
}
return parent::after($response);
}
}
ここでは、 before そして after のメソッドを使用してテーマの初期化を行うメソッド Themeクラス。使用されるメソッドには、instance、get_template、set_template、およびviewがあります。
Step 8 −最後に、次のように、インデックスアクションのビューindex.phpをfuel / app / themes / tpthemes / themesampleに追加します。
<p>The data comes from *fuel/app/themes/tpthemes/themesample/index.html* file.</p>
<p>
<?php echo $message; ?>
</p>
ここでは、コントローラーで動的に設定する必要がある1つの変数messageを定義しました。
新しいテーマを作成しました、 tpthemes で使用しました ThemeSampleコントローラ。URL http:// localhost:8080 / themesample / indexをリクエストして、結果を確認しましょう。結果は次のようになります。