Movable Type 7 テーマ YAMLについて
Movable Type 7からコンテンツタイプが実装されたことにより、YAMLに定義できる値が増えたので紹介します。
テーマ開発するときの指標になればと思います。
はじめに
Movable Type 7から コンテンツタイプテンプレート
という新たなテンプレートを設定することが可能です。
まだ公式サイトには、 コンテンツタイプテンプレート
については明記されていないため個人の所感としてこの記事で紹介します。
MT6でブログ・記事管理をしつつ必要なカスタムフィールドを定義しつつ出力したいページに出していました。
※メインビジュアル管理用ブログなどブログ自体にページは管理せずデータのみを管理したい場合
MT7では記事やブログを分けずに任意でメインビジュアルだけを管理するデータタイプ(複数可)を作ることが可能です。
コンテンツタイプ自体は、さまざまなケース(利用用途)を想定したものになります。
今回はウェブサイトをベースを想定しつつ、従来の記事やブログ管理を比較した形の紹介になります。
コンテンツタイプテンプレートとは?
まずコンテンツタイプテンプレートには、2つの種類から選ぶことができます。
また、どちらもどのデータタイプを参照するかを設定することが可能です。
従来では1ブログ 記事 or ウェブページ = アーカイブテンプレート の参照先だったのでとくに指定せずにテンプレートを作成できました。
コンテンツタイプからは、1ウェブサイト・1子サイト複数のコンテンツタイプを定義できるためテンプレート単位でデータタイプを選べるようになっています。
- コンテンツタイプリストアーカイブ
- コンテンツタイプ アーカイブ
コンテンツタイプリストアーカイブ
コンテンツタイプリストアーカイブは、従来のアーカイブテンプレートで使用していた記事のカテゴリ・年別などのコンテンツタイプ版という認識で問題ないと思います。
コンテンツタイプ アーカイブ
コンテンツタイプ アーカイブは、従来のアーカイブテンプレートで使用していた記事やウェブページに相当するコンテンツタイプ版という認識で問題ないと思います。
コンテンツデータについて
新たにコンテンツタイプで作成されたデータは、コンテンツデータとして格納されます。
コンテンツデータ単位でテンプレート(リストや単体)を出すことも可能ですし、他のテンプレートから呼び出すことも可能です。
※メインビジュアルだけを管理するコンテンツデータを作成してメインテンプレートで出力するなど、要件次第で自由に設計が可能
YAMLについて
上記のコンテンツタイプが加わったことでYAMLで定義する値を紹介します。
template_set
template_setでは、ctがコンテンツタイプテンプレートで使用するkeyになります。
テンプレートの構文は以下のようになります。
名称 | 用途 |
---|---|
ct | コンテンツタイプテンプレートのkey名 |
template_pages | テンプレートのファイル名(templates/template_pages.mtml) |
content_type | コンテンツタイプ名 |
label | テンプレートのラベル |
mappings | アーカイブマッピングを項目 |
archive_type | アーカイブマッピングの種類(ContentType) |
category_field | コンテンツフィールドでカテゴリを指定 |
file_template | アーカイブパスを指定 |
preferred | アーカイブの非優先・優先を指定(0:非優先・1:優先) |
template_set:
component: ~
data:
base_path: templates
label: 'exported_template set'
templates:
ct:
template_pages:
content_type: '固定ページ'
label: 'pages.html'
mappings:
contenttype:
archive_type: ContentType
category_field: 'フォルダ'
file_template: '%-c/%-f'
preferred: 1
importer: template_set
default_content_types
default_content_typesは、コンテンツデータで定義しているコンテンツフィールドを指定します。
template_setで指定した固定ページのフィールドを作成します。
コンテンツデータを複数指定する場合は、dataの直下にあるインデント6個目のハイフンの改行ごとに階層表現することで指定することが可能です。
フィールドのtypeについては今回の記事には掲載せず、別途一覧としてまとめる予定です。
フィールドのtypeごとに指定できる値が異なるためすべてを網羅できていないため、随時更新予定です。
data:
-
ここにコンテンツデータの情報を入力
-
ここにコンテンツデータの情報を入力
名称 | 用途 |
---|---|
description | コンテンツデータの説明 |
fields | コンテンツデータのフィールド項目 |
data_label | フィールドをデータ識別ラベルに設定する場合使用(0:未設定・1設定) |
display | フィールドの表示有無の設定(force:常に表示) |
initial_value | 入力項目の初期値 |
label | フィールドのラベル |
max_length | 最大の文字数 |
min_length | 最小の文字数 |
order | フィールドの並び順を指定 |
required | 必須の有無(0:任意・1:必須) |
type | フィールドのタイプを指定 |
can_add | カテゴリの追加の有無(0:追加なし・1:追加あり) |
category_set | カテゴリセットを指定 |
max | カテゴリの最大設定可能数 |
min | カテゴリの最小設定可能数 |
multiple | カテゴリの複数選択の有無(0:なし・1:あり) |
user_disp_option | 調査中:作成したユーザのidの予想かコンテンツタイプのユーザ単位で表示有無が可能か |
default_content_types:
component: ~
data:
-
description: '固定ページのコンテンツタイプ'
fields:
-
data_label: 1
description: ''
display: force
initial_value: ''
label: 'ページタイトル'
max_length: 255
min_length: 0
order: 1
required: 1
type: single_line_text
-
can_add: 0
category_set: 'フォルダグループ'
description: ''
display: force
label: 'フォルダ'
max: 1
min: 1
multiple: 0
order: 2
required: 0
type: categories
-
description: ''
display: force
initial_value: ''
label: '概要'
order: 3
required: 0
type: embedded_text
-
description: ''
display: force
initial_value: ''
input_format: 0
label: 'ページ本文'
order: 4
required: 1
type: multi_line_text
name: '固定ページ'
user_disp_option: 1
default_category_sets
MT7からカテゴリセットという機能が追加されています。
従来の記事 = カテゴリではなく、コンテンツタイプごとに任意のカテゴリを作成できるようになっています。
複数のコンテンツタイプで同じカテゴリを指定することも可能です。
コンテンツタイプ同様にカテゴリセットも複数指定することは可能です。
dataの直下にある任意のkey名 FolderGroup
を指定し設定できます。
現在のMT7のカテゴリセットのカテゴリ単位で任意のフィールドは出来ません。
そのため従来のようなカテゴリにkeywordのフィールドをCF追加しての運用は現在のバージョンでは出来ないため別の方法を考えなければなりません。
data:
FolderGroup:
categories:
ここにカテゴリの情報を入力
CategoryGroup:
categories:
ここにカテゴリの情報を入力
名称 | 用途 |
---|---|
FolderGroup | カテゴリセットのkey名(複数ある場合は被らない名称にすること) |
categories | カテゴセットの項目 |
":order": | カテゴリの並び順 |
description | カテゴリの説明 |
label | カテゴリのラベル名を指定 |
name | カテゴリセットの名前を指定 |
default_category_sets:
component: ~
data:
FolderGroup:
categories:
":order":
- about
- access
about:
description: '概要のフォルダ'
label: '概要'
access:
description: 'アクセスのフォルダ'
label: 'アクセス'
name: 'フォルダグループ'
テーマの再適用について
コンテンツデータとコンテンツタイプテンプレートと紐付けるため、従来のようにCFだけを削除してテーマの適用という方法は出来ません。
すでに紐づけているコンテンツデータとコンテンツタイプテンプレートがある場合は、以下のような手順で削除しなければいけません。
- コンテンツタイプテンプレートを削除する
- コンテンツデータを削除する
- テーマを再適用する
確認したところコンテンツデータ自体を削除してしまうと、すでに登録したデータが消えてしまいます。
DB自体を削除するためCFのように登録データを残した形で再適用ができないので注意が必要です。
コンテンツフィールドの追加などは削除せずにそのまま反映しましたが、リネームやフィールドの整理などを行ったときにコンテンツタイプ自体が可能性があります。
テーマで管理していく場合は、ある程度実装が進んだタイミングで再適用などは控えたほうが良さそうです。
MT7のテーマについて
MT7用のテーマは、シックス・アパートから提供されているmont-blancやJungfrauがあります。
MT6から使用している私のテーマもMT7ベースで構成したテーマにアップデートしました。
どちらかというとmont-blancに近い構成の初期構築に必要な設定をまとめたものになります。
こちらも参考にしていただければと思います。
最後に
まだまだすべてをまとめきれていないませんが、今後もyamlの指定する情報をまとめていきます。
まずはテーマを作る際の情報として参考になればと思います。
Discussion