- 2009-10-20 (火) 12:48
- MovableType


- サクッとMT5テーマ作成ネタ(2)
男ならザクだよなぁ!・・・じゃなくて昨日の続き・テーマについて
あっ、昨日書き忘れてたけど、「テンプレートセット/config.yaml」では、L10Nのローカライズを読み込まれるテンプレート内部にも効かせるように、MTML自身も「<__trans_section component="mtVicuna">」ってので囲ってやる必要がありました。でも「テーマ/theme.yaml」の場合はこの作業は必要なく、そのままでテンプレート内部にもローカライズが有効になります。MTQで、澤田さんに教わりました。
それからこういう風に直接「theme.yaml」に変換指定書く方法もあるみたいですね。
l10n_lexicon:
ja:
Classic Website: クラシックウェブサイト
theme.yamlとconfig.yamlの中身の比較
テンプレートセット指定部分の比較
実際の「theme.yaml」テンプレートのセット部分はこの様に書かれています。
elements:
template_set:
component: core
importer: template_set
name: template set
data:
label: mtVicuna
base_path: templates
templates:
index:
archive_index:
label: Archive Index
outfile: archives/index.html
rebuild_me: 1
<以下略>
それに対して「config.yaml」でのテンプレートセット部分はこうなってます。
template_sets:
mtVicuna:
label: mtVicuna 2.2.1
base_path: templates
order: 99
templates:
index:
archive_index:
label: Archive Index
outfile: archives/index.html
rebuild_me: 1
<以下略>
YAMLって階層構造になってますけど、「テーマ/theme.yaml」は頭が「elements:」。この下に「template_set:」が来る訳ですね。複数形じゃなく単数形の「template_set:」。ここは意味合いとしてはインポーターの種類が来ているんだと思います。だから単数。
その下に情報が続きます。
component: core
importer: template_set
name: template set
「component:」はテンプレートの内部識別用だと思ってるのですが、MT5から「テーマのエクスポート」やると、ここが「~」とかなってます。ここら辺は追加情報が必要ですね。情報お持ちの方教えてください。というかDB覗けば何か解るかな。なんとなく「mtvicuna」と付けてみました。MTオリジナルのものは「core」ってなってますね。
コメントで、シックスアパートのaklaswadさんから教えていただきました。「component:」はそのインポーターを提供する「element」を指定する為のものだそうです。「カテゴリ」「フォルダ」「ファイル」「テンプレートセット」などはMT本体に含まれるので「core」を指定するのが正しいようです。「カスタムフィールド」の場合は Professionalパックがそれを行うので「custom_fields」とでもなるのでしょうかね?後で確認します。「commercial」となってました。
「importer: template_set」がインポート動作(テンプレートセットのインポート)を指定している場所ですね。「name: template set」は固定のような気がするのですが、ここも変更可能なのかな?なんかここら辺、えらい冗長な気がするんですけど、どうなんでしょ?
それで、やっと「data:」になって、そこから見慣れたモンが始まります。
data:
label: mtVicuna
base_path: templates
templates:
それに対して「テンプレートセット/config.yaml」は頭が「template_sets:」。この下にすぐ各テンプレートセットが続く訳ですね。ここがいっぱい増えるから複数形の「template_sets:」。
両者のこの部分の違いは、「order: 99」の有る無しじゃないかな。テンプレートセットではそれによる並べ替えが行われてたけど、テーマ一覧は単純にアルファベット順になってるようです。(適用済みのものだけ一番上だけど)
テンプレート指定部は違いがない様なのでスルーします。
その他のインポーターについて
テーマの最大の特徴は、テンプレートセット以外の項目も含める事が出来る事ですね。
そのうち「ファイル」のインポートについて説明。というのも「カスタムフィールド」使わないし、別に「カテゴリ」も「フォルダ」もどうでもいいじゃんって感じです。ここら辺は、実際にエクスポートしてみれば解るはずなので、誰か試して教えてください。
で、ちょっと脱線して、「テーマのエクスポート」でのスタティックファイルの書き出しについて。
「ファイル」にチェック入れて、詳細クリックして開いたウィンドウに「含めたいファイルの有るフォルダ」を追加する。なんだけど、試してみて解った事は「ブログ公開フォルダのトップにあるフォルダしか指定できない」って事でした。つまり「theme/style-vega」とかって書き方だと、ファイルの書き出しが行われない。
あと、まぁこれは書いてあるんだけど、出力できるファイルの拡張子は「jpg, jpeg, gif, png, js, css, ico, swf, flv」だけって事。もしかしてスタイルキャッチャーリポジトリ作れないかと思ったのだが、「html」は無視されました。
ちなみにエクスポートで出力形式に「zip形式アーカイブでダウンロード」が出来るようになったのは、すごく良いです。本来の「テーマディレクトリへのインストール」だと書き出したテーマに問題がある場合(テンプレートの名前に「:」を含んでる時とか)、MTがエラーになります。
ファイルインポーターの書き方と動作
ファイルインポーター部分の書き方は、こんな風になっています。
elements:
blog_static_files:
component: core
data:
- themes
importer: blog_static_files
template_set:
component: core
<以下略>
「elements:」直下に「blog_static_files: 」となり、その下に「component:」「data:」「importer:」があります。位置を理解してもらうために、すでに説明した「template_set:」も入れてあります。
「importer: blog_static_files」でファイルのインポートを指定しているわけですね。これがある場合、テーマの中の「blog_static」フォルダの下に、「data:」以下に書かれたフォルダを探し、インポートします。
上の場合はテーマから見て「blog_static/theme/」以下にあるファイルをインポートする訳です。その中にフォルダが含まれる場合も自動でフォルダが作成されます。(そういや試さなかったけど、空フォルダなんかは駄目なんだろうな)もちろんエクスポートと同様に、インポートされるファイル拡張子も「jpg, jpeg, gif, png, js, css, ico, swf, flv」となります。
インポートするとブログのルートに「data:」以下に書かれたフォルダが作成され、その中にファイルが取り込まれます。フォルダ指定は複数列記出来るようなので「 - js」と「 - css」とか、いろんなやり方があると思うのですが、この辺はガイドラインみたいなの、在ったほうが良さそうに思えます。どんなもんでしょ。
「テーマ/config.yaml」があるっぽい
こちらはあまり調べてないけど、Professional Pack 1.5見てみると、config.yamlなのに「themes:」ってのがあるみたいです。([addons/Commercial.pack/config.yaml])これだと、プラグイン的な動作も組み込めるし使い道が広がりそうですね。
その他もろもろ
MTオリジナルのものにある「protected: 1」は、上書きから保護する目的ってのは理解できるけど、どういう動作になるのかな。あと「require: 1」ってのも気になります。aklaswadさんによると「require」は、インポーターを提供する「element」の有る無しによって、テーマの適用を中止させるかどうかを決めるものだそうです。Professionalパックの無い状態でカスタムフィールド・インポーターを使おうとした場合に、テーマの適用を中止する目的で使われるそうです。
まっ、いっぱい抜けているところもあるだろうけど、今回はここまで。
- Newer >: MT5・プラグインの皆さん動いてますか
- < Older: サクッとMT5テーマ作成ネタ(1)
ping a Trackback
- TrackBack URL for this entry.(1)
Comments:(2)
-
said
October 24, 2009 12:49 PM
|
ReplyThis!
こんにちは。aklaswadです。
すばらしいまとめありがとうございます。
一点だけ、componentの指定については、そのelementを取り扱うためのimporterを提供するcomponentを指定する事になっています。template_setのelementならcoreで固定になります。例えば、CustomFieldsを含んだテーマを配布する場合、そのテーマを適用する側のMTにもProfessionalパックがインストールされている必要があります。もしProfessionalパックがインストールされていない環境でテーマを適用しようとした場合に、「(component名)をインストールしないと、このテーマは動かないよ」といった警告が表示されます。
requireの指定も同じように、必要なimporterが見つからない時にそのエレメントは無視してテーマの適用を続行するか、または、そのテーマの適用自体を中止するか、といった、不測の事態でのコントロールに使われています。-
-
replied for
blog.aklaswad.com's comment
October 24, 2009 8:00 PM
|
ReplyThis!
こんにちはaklaswadさん。忙しいのにすいません。
なるほど「component」と「require」はそういう意味なのですね。解りました。この本文と作成したテーマの修正します。
適用されたテーマ自体の認識にでも使っているのかと思っていたのですが、そうではないのですね。DBみたらテーマのフォルダ名が格納されてました。
-




スクリプトの読み込みが完了していません。
メールフォーム(Javascriptを使用していません)や、
Twitter経由のCommentでもReplyいたします。ただし返信はブログのコメントとして行う事もあります。