本ページでは、PowerCMS のテーマ機能についての技術的な情報を説明します。
テーマ(Theme)とは?
themes ディレクトリ
ユーザが作成あるいは入手したテーマを利用するにはテーマを themes ディレクトリに配置する必要が有ります。
themes ディレクトリは、PowerCMS をインストールしたアプリケーションディレクトリに存在します。また、環境変数の "ThemesDirectory" で指定することもできます。
ThemesDirectory themes
初期値は "themes" [ MT_HOME/themes/ ] です。themes ディレクトリは、以下の設定が必要です。
- mt.cgi の実行ユーザー(apache や www-data、suexec 環境下では mt.cgi のオーナーなど)が読み出し、書き込み、一覧できる。
また、以下の設定が推奨されます。
- Web サーバによって 公開されていない。
テーマの配置
themes ディレクトリには、plugins ディレクトリと同様に、各テーマを個別のディレクトリとする、複数のテーマを配置できます。各テーマのディレクトリには、theme.yaml ファイルと必要なファイルが配置されています。代表的な、themes ディレクトリ は以下のような構成になります。
(MT_HOME)/ themes/ MyFirstTheme/ theme.yaml thumbnail.png thumbnail_medium.png thumbnail_small.png alt_tmpl/ static/ blog_templates/ blog_static/
プラグインとの違い
プラグインとテーマには、大きく 2 つの違いがあります。
Perl コードの禁止
theme.yaml を含むテーマのyamlファイルには、Perl コードとみなされる値を書くことができません。例えば、"sub { " で始まる文字列や、$PluginFoo::PluginFoo::method 形式のメソッド呼び出しなどです。
ロードタイミング
プラグインは PowerCMS のインスタンス起動毎にすべてのプラグインがロードされますが、テーマは必要な時にロードされます。ユーザーがテーマの一覧画面を開いたときには、すべてのテーマがロードされます。スペースの操作で、テーマの情報が必要な場合は、対象のテーマのみがロードされます。
ワークスペースとスペースのテーマ
テーマは、スペースに適用できるスペーステーマと、ワークスペースに適用できるウェブサイトテーマがあります。また、スペースとワークスペースの両方に適用できるテーマを作成する事もできます。
レジストリ に追加するテーマ情報
レジストリ に追加する情報は、テーマの "基本情報" と、"テーマ エレメント" と呼ばれる拡張情報に分けることができます。
テーマ エレメント
テーマ エレメントは、テーマに拡張性を持たせるための仕組みです。プラグインと、テーマを連携させることができます。テーマ作者は、必要な テーマ エレメントをいくつでもテーマに含めることができます。
各テーマ エレメント には以下のレジストリキーを指定します。
- importer
このテーマ エレメントの、インポータの識別IDです。省略できません。指定されていないと、テーマのロード時にエラーが発生し、利用できなくなります。
- component
このテーマ エレメントの、インポータおよびエクスポータを提供しているコンポーネントの名前です。省略可能です。エクスポータによって自動的に設定される場合もあります。
- scheme_version
このテーマ エレメントの、スキーマバージョンです。整数あるいは小数で記述します。省略すると、自動的に "1.0" とみなされます。PowerCMS の管理画面でテーマをエクスポートした場合には、エクスポータが自動で適切なバージョン番号を設定します。
- minimum_importer_version
このテーマ エレメントをインポートするために、必要なインポータのバージョンを指定します。省略可能です。省略すると、"0" とみなされます。
- require
このテーマ エレメントが、テーマを利用するのに必須かどうかを指定します。省略可能です。省略すると、"0" とみなされます。
- data
このテーマ エレメントの内容です。data 以下に記述する内容は、そのテーマ エレメントのインポータの実装に依存します。PowerCMS の標準のテーマエレメントについては以下をご参照下さい。
ファイル
テーマのデザインで利用する画像ファイルなどを、(THEME_HOME)/staticディレクトリに含めることができます。このディレクトリがテーマに含まれていると、PowerCMS は自動的にこのディレクトリの内容を(SUPPORT_DIRECTORY)/theme_static/MY_THEME ディレクトリにコピーします。
alt-tmpl ディレクトリ
テーマに、alt-tmpl ディレクトリを含めると、そのテーマを利用中のスペースの管理画面をカスタマイズすることができます。PowerCMS が管理画面を表示するときに、最優先のテンプレートとして利用します。これにより、テーマごとに異なる管理画面を提供できます。
プラグイン経由でのテーマの追加
themesディレクトリ以下にインストールされたテーマ以外にも、プラグイン経由でテーマを追加する事も可能です。レジストリの "themes" キー以下にテーマの定義を行ってください。
- 一覧へ