テーマはウェブアプリケーションのページの外観をカスタマイズする為の システマティックな方法です。新しいテーマを適用することで、 ウェブアプリケーション全体のデザインを簡単にドラマチック に変える事が出来ます。
Yiiでの各テーマは、ビューファイル、レイアウトファイル、
画像やCSSやJavaScriptなどの関連するリソースで成り立った
ディレクトリを表しています。テーマの名前はディレクトリ名
になっています。全てのテーマは、WebRoot/themas
という同じディレクトリの中に置かれます。
いかなる場合でも有効に出来るテーマは一つだけです。
ヒント: デフォルトのテーマディレクトリ
WebRoot/themes
は別の物に設定可能です。basePath と baseUrl themeManager アプリケーションコンポーネントのプロパティを望む物に設定して下さい。
テーマを有効にするには、ウェブアプリケーションのプロパティである、 theme の名前を望むものにセットします。 これは application configuration の中か、コントローラアクションの処理の中のどちらでも行うことが可能です。
注意: テーマの名前は大文字小文字を区別します。もしアクティブ にしようとしたテーマが存在していない場合、
Yii::app()->theme
はnull
を返すでしょう。
テーマディレクトリの中身は application base
path
の中身と同様の方法で纏められなければなりません。例えば、
全てのビューファイルは views
の中に置かれ、レイアウトビューファイルは
views/layouts
の中、システムビューファイルは views/system
の中でなければいけません。例えば、PostController
のcreate
ビューをclassic
テーマの中のビューで置き換えたい場合には、新しいファイルは、WebRoot/themes/classic/views/post/create.php
に置きます。
モジュールの中のコントローラに対応するビューは、
対応するテーマのビューもやはりviews
ディレクトリに置きます。
例えば、前記のPostController
がフォーラム
と呼ばれるモジュールの中にあるならば、
WebRoot/themes/classic/views/forum/post/create.php
としてcreate
ビューファイルを配置する必要があります。
もし、forum
モジュールが他のsupport
モジュールの中にある場合は、ビューファイルはWebRoot/themes/classic/views/support/forum/post/create.php
となります。
注意:
views
ディレクトリは、 セキュリティに関わるデータを含む事がありえる為、 ウェブユーザーからのアクセスを防ぐ様に設定するべきです。
ビューを表示する為に、render か renderPartial をコールした際、 結びついたビューファイルは、レイアウトファイルと同様に、 現在アクティブになっているテーマの中から探されます。そして見つかった場合は、 それらのファイルがレンダリングされます。そうでない場合は、 viewPath と layoutPath で定められたデフォルトの場所へと探す場所が代替されます。
ヒント: 私たちはテーマビューの中で、他のテーマのリソースファイル へのリンクを必要とすることが度々あります。例えば、あるテーマの
images
ディレクトリの中の画像を表示したい事があるでしょう。 現在アクティブになっているテーマの baseUrl プロパティを用いることで、下記の様に画像へのURLを生成する事が出来ます。Yii::app()->theme->baseUrl . '/images/FileName.gif'
Signup or Login in order to comment.