Movable Type 備忘録

 テンプレートセットの作り方

こんにちわ^^

Firefox 3 は今までと違ってサクサク表示されるようです (●´∀`●)
今のところ Firefox 3 は今お使いの Firefox と共存することができる(Windws 版だけ)ようなので、わたしも試しにインストールしてみます。

でもねぇ、今のわたしの興味は Firefox 3 よりも Safari 3 なのです (; ̄∇ ̄A 一目ぼれってヤツ !?
厚みがない、平面的なデザインが気に入ってます。

まだ、いろいろ不便なところは多々ありますが、それでも Safari なのです。
Safari にも Firebug みたいな機能があるといいなぁと思うのココロ。

さて、タイトルにもあるように今回はテンプレートセットの作り方です。
自分専用のテンプレートセットを作ってみよぉ!! です。

- 2008.02.25 追記 -
何だか oscar さんとこで結構重要なことかかれてました。

参考にしてちょ ( ̄∇ ̄)/

- 2008.02.24 追記 -
友人から指摘されて (; ̄∇ ̄A、図を入れるなどしてもぅ少し分かりやすく説明してみました。

テンプレートセットの入手

テンプレートセットの作り方はカンタンです。
まずはベースとなるテンプレートセットを以下のページから入手します。

上記ページの下の方に YAML(ヤムル)版と Perl 版があります。基本的なところはどちらも同じなのでお好みでどうぞ。
とりえあずここでは、記述が楽な YAML 版で説明していきます。

ウィキペディアにもあるように、YAML 版はタブが使用できないのでご注意ください。

ディレクトリ構成

ここで説明するテンプレートセットは、以下のようなディレクトリ構成とします。

  1. http://bizcaz.com/
  2.   |
  3.   +-- mt/
  4.   | +-- plugins/
  5. | | +-- bzbell/
  6. | | | +-- config.yaml
  7.   | | | +-- templates/
  8. | | | | +-- archive_entry.mtml
  9.   | | | | +-- archive_page.mtml
  10.   | | | | +-- archive_data_based.mtml
  11.   | | | | +-- archive_calendar.mtml
  12.   | | | | +-- index_main.mtml
  13.   | | | | +-- index_archive.mtml
  14.   | | | | +-- styles_main.mtml
  15.   | | | | +-- styles_theme.mtml
  16.   | | | | +-- system_search_results.mtml
  17.   | | | | +-- system_comment_preview.mtml
  18.   | | | | +-- module_header.mtml
  19.   | | | | +-- module_footer.mtml
  20.   | | | | +-- widget_powered.mtml

赤い字のディレクトリ名は、ユニーク(他プラグインと重複しない)名称とする必要があります。 任意な名称で構いませんが、半角英字のみ使用可能です。アンダーバー( _ )やハイフン( - )などの記号は使用できません。

青い字のファイルがこれから説明する、テンプレートセットのプラグインになります。
ファイル名は変更しないでください。

緑の字のファイルが、各テンプレートのファイルになります。 ファイル名は任意で決めることができます。
たとえば、わたしの場合はファイルの先頭の文字によってテンプレートの種類を区分けしています。

  • archives_
    アーカイブテンプレート
  • index_
    インデックステンプレート
  • system_
    システムテンプレート
  • module_
    テンプレートモジュール
  • widget_
    ウィジェット

- 2008.02.25 追記 -
システムテンプレートはファイル名を任意に変更できないことが分かりました。 試しにテンプレートの適用はできるのですが、なぜか自分のテンプレートが使用されず、デフォルトのテンプレートが使用されてしまいます。
よって、システムテンプレートはデフォルトのままにしてください。

各自で管理しやすいようにプレフィックスを付けるといいです ( ̄∇ ̄)b
また、ファイルの拡張子は必ず .mtml である必要があります。

テンプレートセットの説明

MyPlugin フォルダの中に config.yaml というファイルがあります。 これがテンプレートセットの本体になります。
上記ディレクトリ構成を元に作った config.yaml を以下に記します。 また、このテンプレートセットを元に説明していきます。

config.yaml

  1. key: MT::Plugin::bzbell
  2. name: bzbell Template Set
  3. description: Template Set for bzbell.
  4. author_name: bzbell
  5. author_link: http://bizcaz.com/
  6. version: 1.0
  7.  
  8. template_sets:
  9.   bzbell_set:
  10.     label: わたし専用テンプレートセット
  11.     base_path: templates
  12.     order: 50
  13.     templates:
  14.       #
  15.       # for index templates
  16.       #
  17.       # ▼ここからインデックステンプレート用▼
  18.       index:
  19.         # ★
  20.         index_main:
  21.           label: インデックス(メイン)
  22.           outfile: index.php
  23.           rebuild_me: 1
  24.  
  25.         # ★
  26.         index_archive:
  27.           label: インデックス(アーカイブ)
  28.           outfile: archives/index.php
  29.           rebuild_me: 1
  30.       # ▲ここまでインデックステンプレート用▲
  31.       #
  32.       # only individual, webpage archive template
  33.       #
  34.       # ▼ここからブログページ、ウェブページ用▼
  35.       individual:
  36.         # ★
  37.         archive_entry:
  38.           label: ブログページ
  39.           mappings:
  40.             entry_archive:
  41.               archive_type: Individual
  42.               file_template: %y/%m/%d-%h%n%s%x
  43.  
  44.         # ★
  45.         archive_page:
  46.           label: ウェブページ
  47.           mappings:
  48.             page_archive:
  49.               archive_type: Page
  50.       # ▲ここまでブログページ、ウェブページ用▲
  51.       #
  52.       # for otherwise archive templates
  53.       #
  54.       # ▼ここからカテゴリページ、月別ページなどのアーカイブページ用▼
  55.       archive:
  56.         # ★
  57.         archive_data_based:
  58.           label: アーカイブ
  59.           mappings:
  60.             # ☆
  61.             monthly:
  62.               archive_type: Monthly
  63.               file_template: %y/%m/%i
  64.               preferred: 1
  65.  
  66.             # ☆
  67.             category:
  68.               archive_type: Category
  69.               file_template: %-c/%i
  70.  
  71.         # ★
  72.         archive_calendar:
  73.           label: カレンダー
  74.           mappings:
  75.             monthly:
  76.               archive_type: Monthly
  77.               file_template: %y/%m/calendar%x
  78.               preferred: 0
  79.       # ▲ここまでカテゴリページ、月別ページなどのアーカイブページ用▲
  80.       #
  81.       # for system templates
  82.       #
  83.       # ▼ここからシステムテンプレート用▼
  84.       system:
  85.         # ★
  86.         system_search_results:
  87.           label: 検索結果
  88.  
  89.         # ★
  90.         system_comment_preview:
  91.           label: コメントプレビュー
  92.       # ▲ここまでシステムテンプレート用▲
  93.       #
  94.       # for template modules
  95.       #
  96.       # ▼ここからテンプレートモジュール用▼
  97.       module:
  98.         # ★
  99.         module_header:
  100.           label: ヘッダー
  101.  
  102.         # ★
  103.         module_footer:
  104.           label: フッター
  105.       # ▲ここまでテンプレートモジュール用▲
  106.       #
  107.       # for widget templates
  108.       #
  109.       # ▼ここからウィジェット用▼
  110.       widget:
  111.         # ★
  112.         widget_powered:
  113.           label: MT Powered
  114.       # ▲ここまでウィジェット用▲
テンプレートセット

テンプレートセットは右図のような階層構造になってます。
右図①が階層構造のテンプレート全体を示し、Movable Type の管理画面からテンプレート一覧を表示すると、

  • インデックステンプレート
  • アーカイブテンプレート
  • システムテンプレート
  • テンプレートモジュール
  • ウィジェット

というように区別されてますね。それが②に該当します。
そして、③が個々のテンプレートに相当します。

ただし、アーカイブテンプレートだけは記事テンプレート(ブログページ、ウェブページ)とアーカイブテンプレート(カテゴリページ、月別ページなど)のように分けて設定します。
また、アーカイブマッピングについての設定も必要なので、④、⑤のようにそのテンプレートがどのアーカイブのものかを指定する必要があるわけです ( ̄∇ ̄)b

ですので、考え方としては③の単位で各自のテンプレートを記述していくことになります。
以降でもう少し細かく説明していきます。

プラグインのヘッダ部

プラグインのヘッダ部について説明します。

config.yaml 1 ~ 6 行目

  1. key: MT::Plugin::bzbell
  2. name: bzbell Template Set
  3. description: Template Set for bzbell.
  4. author_name: bzbell
  5. author_link: http://bizcaz.com/
  6. version: 1.0

赤い字の部分はプラグイン名になります。
上記例だと bzbell プラグインということを明示してます。 任意の名称で構いませんが、半角英字のみ使用可能です。

青い字の部分はプラグイン一覧で表示されるプラグインの名称です。 任意の名称で構いません。

その他に、プラグイン説明(description)、プラグイン作者名(author_name)などありますが必須ではありません。 不要でしたら削除します。

テンプレートセットのヘッダ部

テンプレートセットのヘッダ部について説明します。

config.yaml 8 ~ 12 行目

  1. template_sets:
  2.   bzbell_set:
  3.     label: わたし専用テンプレートセット
  4.     base_path: templates
  5.     order: 50

青い字の部分はテンプレートセットのセクションになります。 1 つのプラグインで複数のテンプレートセットを明記する場合には、重複しない名称にする必要がありますが、1 プラグイン/1 テンプレートセットの場合には変更しなくっても問題ありません。

赤い字の部分はテンプレートセットを適用する際、一覧表示される名称になります。 任意の名称で構いません。

緑の字の部分は各テンプレートのファイルが格納されてディレクトリ名称を指定します。
たとえば、上記ディレクトリ構成でいうと、bzbell.yaml がある場所を基準に、各テンプレートを格納した templates ディレクトリの名称を指定することになります。

ピンクの字の部分はテンプレートを適用する際一覧表示される順番を示します。
この番号が小さいほど上に表示されるます。

インデックステンプレート

自分専用のインテックステンプレートを記述していきます。

config.yaml 17 ~ 25 行目

  1. index:
  2.   index_main:
  3.     label: インデックス(メイン)
  4.     outfile: index.php
  5.     rebuild_me: 1
  6.   index_archive:
  7.     label: インデックス(アーカイブ)
  8.     outfile: archives/index.php
  9.     rebuild_me: 1

赤い字の部分はテンプレート識別子を記述します。 ここにはテンプレートファイル名の .mtml を省いた名称を指定します。必ずファイル名と一致させてください。
また、ここで指定した識別子は MTLink タグで使用することができます。たとえば、以下のようなかんじ。

  1. <$MTLink template="index_main"$>

青い字の部分にはテンプレート名称を記述します。
任意の名称で構いません。各自で管理しやすいテンプレート名称を付けます。

緑の字の部分には再構築後のファイル名を記述します。 ディレクトリを指定することもできます。ブログのトップページからの相対パスとなります。
たとえば、上記例だと「インデックス(アーカイブ)」の出力ファイル名のように記述します。

ピンクの字の部分には自動的に再構築時を行うか否かを設定します。

  • 0: 自動的に行わない。
  • 1: 自動的に行う。

以上でインデックステンプレートの記述は完了です。
15 ~ 18 行目を一塊として、必要な分だけコピー & ペーストすることで、自由にインデックステンプレートを追加していきます。

アーカイブテンプレート

自分専用のアーカイブテンプレートを記述していきます。
アーカイブテンプレートには 2 つのセクションがあります。

  1.   #
  2.   # only individual, webpage archive template
  3.   #
  4. individual:
  5. archive_entry:
  6.       label: ブログページ
  7.       mappings:
  8.         entry_archive:
  9.           archive_type: Individual
  10.           file_template: %y/%m/%d-%h%n%s%x
  11.     archive_page:
  12.       label: ウェブページ
  13.       mappings:
  14.         page_archive:
  15.           archive_type: Page
  16.   #
  17.   # for otherwise archive templates
  18.   #
  19. archive:
  20. archive_data_based:
  21.       label: アーカイブ
  22.       mappings:
  23.         monthly:
  24.           archive_type: Monthly
  25.           file_template: %y/%m/%i
  26.           preferred: 1
  27.         category:
  28.           archive_type: Category
  29.           file_template: %-c/%i
  30.     archive_calendar:
  31.       label: カレンダー
  32.       mappings:
  33.         monthly:
  34.           archive_type: Monthly
  35.           file_template: %y/%m/calendar%x
  36.           preferred: 0

赤い字の部分がブログ記事、ウェブページアーカイブ用テンプレートを記述するためのセクション(individual)です。
そして、青い字の部分はカテゴリ、月別アーカイブなどのテンプレート用のセクション(archive)になります。

  • individual セクション

    config.yaml 29 ~ 40 行目

    1. individual:
    2.   archive_entry:
    3.     label: ブログページ
    4.     mappings:
    5.       entry_archive:
    6.         archive_type: Individual
    7.         file_template: %y/%m/%d-%h%n%s%x
    8.   archive_page:
    9.     label: ウェブページ
    10.     mappings:
    11.       page_archive:
    12.         archive_type: Page

    上記はブログ記事アーカイブ、ウェブページアーカイブ用の記述です。
    19 行目の individual というセクション内に記述します。

    通常だと上記例のように、2 つのテンプレートを記述するだけだと思います。

    赤い字の部分はテンプレート識別子を記述します。 ここにはテンプレートファイル名の .mtml を省いた名称を指定します。必ずファイル名と一致させてください。

    青い字の部分はテンプレート名称を記述します。ここでの名称が Movable Type のテンプレート一覧に表示される名称です。
    任意の名称で構いません。各自で管理しやすいテンプレート名称を付けます。

    緑の字の部分はマッピングタイプを記述します。
    individual セクションの中では entry_archive(ブログ記事)か page_archive(ウェブページ)の何れかを選択するのみです。

    ピンクの字の部分はアーカイブタイプを選択します。
    individual セクションの中では Individual(ブログ記事)か Page(ウェブページ)の何れかを選択するのみです。

    黄色の字の部分はアーカイブマッピングの出力ファイル名を記述します。
    再構築時に生成されたファイルのフォーマットを指定します。

    実際には、アーカイブテンプレート一覧にある「ブログ記事」テンプレートを表示してみてください。
    下の方にアーカイブマッピングとありますので、そちらで表示されてるパスを指定することになります。
    また、ドロップダウンリストから「カスタム...」を選択すると出力フォーマットをコピーすることができます。

    出力フォーマットの指定は必須ではありません。デフォルトのままでよければ、'file_template' の行を削除します。

  • archive セクション

    config.yaml 44 ~ 61 行目

    1. archive:
    2.   archive_data_based:
    3.     label: アーカイブ
    4.     mappings:
    5.       monthly:
    6.         archive_type: Monthly
    7.         file_template: %y/%m/%i
    8.         preferred: 1
    9.       category:
    10.         archive_type: Category
    11.         file_template: %-c/%i
    12.   archive_calendar:
    13.     label: カレンダー
    14.     mappings:
    15.       monthly:
    16.         archive_type: Monthly
    17.         file_template: %y/%m/calendar%x
    18.         preferred: 0

    上記は月別アーカイブなど、ブログ記事、ウェブページアーカイブ以外のアーカイブテンプレートを記述していきます。
    青い字の部分は先ほどの individual セクションで説明した内容と同じです。

    赤い字の部分はマッピングタイプを記述します。そして、緑の字の部分はアーカイブタイプを選択します。
    マッピングタイプとアーカイブタイプは必ず対にする必要があり、以下の中から選択することになります。

    アーカイブ名 マッピングタイプ アーカイブタイプ
    ブログ記事 individual Individual
    ウェブページ page Page
    日別 daily Daily
    週別 weekly Weekly
    月別 monthly Monthly
    年別 yearly Yearly
    ユーザー別 author Author
    ユーザー - 日別 author_daily Author-Daily
    ユーザー - 週別 author_weekly Author-Weekly
    ユーザー - 月別 author_monthly Author-Monthly
    ユーザー - 年別 author_yearly Author-Yearly
    カテゴリ category Category
    カテゴリ - 日別 category_daily Category-Daily
    カテゴリ - 週別 category_weekly Category-Weekly
    カテゴリ - 月別 category_monthly Category-Monthly
    カテゴリ - 年別 category_yearly Category-Yearly

    ピンクの字の部分はマッピングの優先度を示します。
    たとえば、上記例だと 'monthly' マッピングとして、「月別」アーカイブと「カレンダー」アーカイブで使用しています。
    このままだとどっちのテンプレートを使用していいのか分かりませんね ( ̄∇ ̄)b
    そこで、優先度を設定してあげることでデフォルトの 'monthly' マッピングを決める必要があります。

    • 0: 優先しない
    • 1: 最優先

システムテンプレート

自分専用のシステムテンプレートのを記述していきます。

config.yaml 65 ~ 69 行目

  1. system:
  2.   system_search_results:
  3.     label: 検索結果
  4.   system_comment_preview:
  5.     label: コメントプレビュー

赤い字の部分は今まで説明したように、テンプレート識別子を記述します。
ここにはテンプレートファイル名の .mtml を省いた名称を指定します。必ずファイル名と一致させてください。

青い字の部分はテンプレート名称を記述します。ここでの名称が Movable Type のテンプレート一覧に表示される名称です。
任意の名称で構いません。各自で管理しやすいテンプレート名称を付けます。

テンプレートモジュール

自分専用のテンプレートモジュールを記述していきます。

config.yaml 73 ~ 77 行目

  1. module:
  2.   module_header:
  3.     label: ヘッダー
  4.   module_footer:
  5.     label: フッター

赤い字の部分はテンプレート識別子を記述します。
ここにはテンプレートファイル名の .mtml を省いた名称を指定します。必ずファイル名と一致させてください。

青い字の部分はテンプレート名称を記述します。ここでの名称が Movable Type のテンプレート一覧に表示される名称です。
任意の名称で構いません。各自で管理しやすいテンプレート名称を付けます。

ウィジェット

自分専用のウィジェットを記述していきます。

config.yaml 81 ~ 83 行目

  1. widget:
  2.   widget_powered:
  3.     label: MT Powered

内容はテンプレートモジュールと同じです。

テンプレートセットの作成

プラグインの記述が終わったら、後は記述通りに今お使いのテンプレートをファイルにコピー(作成)していくだけです。
その際ファイル名は必ず、プラグイン内で明記したテンプレート名称+.mtml というフォーマットで保存してください。

一通りコピーし終わったら、mt/plugins/ ディレクトリ内にアップロードして、以下のページを参考にテンプレートの適用確認を行います。

最後に

実はまだ説明してないことが結構あったりするのですが、基本的なテンプレートセットは上記で十分だと思います。
機会があれば追々説明していきますが、まずは基本的なテンプレートセットでオリジナルを作って、テンプレート差し替えを楽にしてみてください (●>∀<●)/

てか、やってみるとテンプレートセットの作成なんて、そんな大したことないことが分かると思います。
言い換えると、Movable Type が大したことないようにしてくれてるってかんじでしょうか。

便利なので試してみてください ( ̄∇ ̄)/

 Trackback Pings(1)

from ホームページ運営中の青年の覚書ブログ

テンプレートセットは色々な方が公開されていてそれらを使う事はMovableTyp...

 Comments(3)

#1: Posted by E1 @ November 9, 2008 [REPLY]
user-pic

はじめまして。
こちらの記事、とても参考になりました。わかりやすい情報ありがとうございます。
勉強ついでにトラックバック記事を書いて
http://bizcaz.com/mt/mt-memo_89935751765767.cgi/692
へ送信してみたんですがPingを受け付けてくれないみたいです。。。
HTTP error: 404 Not Foundとエラーが返ってきてしまいます。
すでにお気づきでしたらすいません。

#2: Posted by Author Profile Page bzbellからE1への返信 @ November 9, 2008 [REPLY]
user-pic

>>1 E1 さん

こんにちわ^^

あちゃぁキャハハ
MT のアップグレードの際 mt-tb.cgi をリネームするの忘れてました。
ご迷惑をおかけしました。

今後ともどうぞよしなにもじもじ

#3: Posted by E1 @ November 9, 2008 [REPLY]
user-pic

早速のレスありがとうございます!^ ^
リネームを忘れるとこういうエラーになるんですね。勉強になりました。
再度Ping送信したら送信はできたみたいです。ありがとうございます。

こちらこそ今後ともよろしくお願いいたします!あせあせ

 Post a Comment

 

コメント用フィード