0 follower

テーマ

テーマはウェブアプリケーションのページの外観をカスタマイズする為の システマティックな方法です。新しいテーマを適用することで、 ウェブアプリケーション全体のデザインを簡単にドラマチック に変える事が出来ます。

Yiiでの各テーマは、ビューファイル、レイアウトファイル、 画像やCSSやJavaScriptなどの関連するリソースで成り立った ディレクトリを表しています。テーマの名前はディレクトリ名 になっています。全てのテーマは、WebRoot/themas という同じディレクトリの中に置かれます。 いかなる場合でも有効に出来るテーマは一つだけです。

ヒント: デフォルトのテーマディレクトリ WebRoot/themes は別の物に設定可能です。basePathbaseUrl themeManager アプリケーションコンポーネントのプロパティを望む物に設定して下さい。

テーマを有効にするには、ウェブアプリケーションのプロパティである、 theme の名前を望むものにセットします。 これは application configuration の中か、コントローラアクションの処理の中のどちらでも行うことが可能です。

注意: テーマの名前は大文字小文字を区別します。もしアクティブ にしようとしたテーマが存在していない場合、Yii::app()->themenull を返すでしょう。

テーマディレクトリの中身は application base path の中身と同様の方法で纏められなければなりません。例えば、 全てのビューファイルは views の中に置かれ、レイアウトビューファイルは views/layouts の中、システムビューファイルは views/system の中でなければいけません。例えば、PostControllercreateビューを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 ディレクトリは、 セキュリティに関わるデータを含む事がありえる為、 ウェブユーザーからのアクセスを防ぐ様に設定するべきです。

ビューを表示する為に、renderrenderPartial をコールした際、 結びついたビューファイルは、レイアウトファイルと同様に、 現在アクティブになっているテーマの中から探されます。そして見つかった場合は、 それらのファイルがレンダリングされます。そうでない場合は、 viewPathlayoutPath で定められたデフォルトの場所へと探す場所が代替されます。

ヒント: 私たちはテーマビューの中で、他のテーマのリソースファイル へのリンクを必要とすることが度々あります。例えば、あるテーマの images ディレクトリの中の画像を表示したい事があるでしょう。 現在アクティブになっているテーマの baseUrl プロパティを用いることで、下記の様に画像へのURLを生成する事が出来ます。

Yii::app()->theme->baseUrl . '/images/FileName.gif'