テーマの概要
テーマ(Theme)とは
themes ディレクトリ
ユーザが作成あるいは入手したテーマを利用するにはテーマを themes ディレクトリに配置する必要が有ります。 themes ディレクトリは、Movable Type をインストールしたアプリケーションディレクトリに存在します。また、環境変数の "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 形式のメソッド呼び出しなどです。
ロードタイミング
プラグインは MT のインスタンス起動毎にすべてのプラグインがロードされますが、テーマは必要な時にロードされます。ユーザーがテーマの一覧画面を開いたときには、すべてのテーマがロードされます。ブログの操作で、テーマの情報が必要な場合は、対象のテーマのみがロードされます。
ウェブサイトとブログのテーマ
テーマは、ブログに適用できるブログテーマと、ウェブサイトに適用できるウェブサイトテーマがあります。また、ブログとウェブサイトの両方に適用できるテーマを作成する事もできます。
レジストリ に追加するテーマ情報
レジストリ に追加する情報は、テーマの "基本情報" と、"テーマ エレメント" と呼ばれる拡張情報に分けることができます。
基本情報
基本情報は、テーマ名や作者名などのテーマの設定情報です。1 つのテーマには、1 つの基本情報が必要です。
テーマ エレメント
テーマ エレメントは、テーマに拡張性を持たせるための仕組みです。プラグインと、テーマを連携させることができます。テーマ作者は、必要な テーマ エレメントをいくつでもテーマに含めることができます。 各テーマ エレメント には以下のレジストリキーを指定します。
importer このテーマ エレメントの、インポータの識別IDです。省略できません。指定されていないと、テーマのロード時にエラーが発生し、利用できなくなります。
component このテーマ エレメントの、インポータおよびエクスポータを提供しているコンポーネントの名前です。省略可能です。エクスポータによって自動的に設定される場合もあります。
scheme_version このテーマ エレメントの、スキーマバージョンです。整数あるいは小数で記述します。省略すると、自動的に "1.0" とみなされます。Movable Type の管理画面でテーマをエクスポートした場合には、エクスポータが自動で適切なバージョン番号を設定します。
minimumimporterversion このテーマ エレメントをインポートするために、必要なインポータのバージョンを指定します。省略可能です。省略すると、"0" とみなされます。
require このテーマ エレメントが、テーマを利用するのに必須かどうかを指定します。省略可能です。省略すると、"0" とみなされます。
data このテーマ エレメントの内容です。data 以下に記述する内容は、そのテーマ エレメントのインポータの実装に依存します。
ファイル
テーマのデザインで利用する画像ファイルなどを、(THEMEHOME)/staticディレクトリに含めることができます。このディレクトリがテーマに含まれていると、Movable Type は自動的にこのディレクトリの内容を(SUPPORTDIRECTORY)/themestatic/MYTHEME ディレクトリにコピーします。
alt-tmpl ディレクトリ
テーマに、alt-tmpl ディレクトリを含めると、そのテーマを利用中のブログの管理画面をカスタマイズすることができます。Movable Type が管理画面を表示するときに、最優先のテンプレートとして利用します。これにより、テーマごとに異なる管理画面を提供できます。
プラグイン経由でのテーマの追加
themesディレクトリ以下にインストールされたテーマ以外にも、プラグイン経由でテーマを追加する事も可能です。レジストリの "themes" キー以下にテーマの定義を行ってください。