Movable Type CMSプラットフォーム Movable Type
ドキュメントサイト

Movable Type 6 ManualMovable Type 6 マニュアル

テーマの構造

最終更新日: 2017.10.06

本ページでは、Movable Type 6 のテーマ機能についての技術的な情報を説明します。

テーマ(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 の管理画面でテーマをエクスポートした場合には、エクスポータが自動で適切なバージョン番号を設定します。

minimum_importer_version

このテーマ エレメントをインポートするために、必要なインポータのバージョンを指定します。省略可能です。省略すると、"0" とみなされます。

require

このテーマ エレメントが、テーマを利用するのに必須かどうかを指定します。省略可能です。省略すると、"0" とみなされます。

data

このテーマ エレメントの内容です。data 以下に記述する内容は、そのテーマ エレメントのインポータの実装に依存します。Movable Type の標準のテーマエレメントについては以下をご参照下さい。

標準のテーマ エレメント

テーマ エレメントをプラグインが処理する場合は、プラグインのインポータの実装に依存します。プラグインでのテーマ エレメント の拡張については、以下をご参照下さい。

プラグインによるテーマフレームワークの拡張

ファイル

テーマのデザインで利用する画像ファイルなどを、(THEME_HOME)/staticディレクトリに含めることができます。このディレクトリがテーマに含まれていると、Movable Type は自動的にこのディレクトリの内容を(SUPPORT_DIRECTORY)/theme_static/MY_THEME ディレクトリにコピーします。

alt-tmpl ディレクトリ

テーマに、alt-tmpl ディレクトリを含めると、そのテーマを利用中のブログの管理画面をカスタマイズすることができます。Movable Type が管理画面を表示するときに、最優先のテンプレートとして利用します。これにより、テーマごとに異なる管理画面を提供できます。

プラグイン経由でのテーマの追加

themesディレクトリ以下にインストールされたテーマ以外にも、プラグイン経由でテーマを追加する事も可能です。レジストリの "themes" キー以下にテーマの定義を行ってください。