Home > Internet > Movabletype > サクッとMT5テーマ作成ネタ(2)

サクッとMT5テーマ作成ネタ(2)

10/24 シックスアパートのaklaswadさんに「component」と「require」についての情報をいただきました。いただいたコメントを元に本文を加筆修正しました。

男ならザクだよなぁ!・・・じゃなくて昨日の続き・テーマについて

あっ、昨日書き忘れてたけど、「テンプレートセット/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パックの無い状態でカスタムフィールド・インポーターを使おうとした場合に、テーマの適用を中止する目的で使われるそうです。

まっ、いっぱい抜けているところもあるだろうけど、今回はここまで。

ping a Trackback

TrackBack URL for this entry.(1)

Comments:(2)

blog.aklaswad.com`s user-pic OpenIDAuthed blog.aklaswad.com said October 24, 2009 12:49 PM | ReplyThis!

こんにちは。aklaswadです。
すばらしいまとめありがとうございます。
一点だけ、componentの指定については、そのelementを取り扱うためのimporterを提供するcomponentを指定する事になっています。template_setのelementならcoreで固定になります。

例えば、CustomFieldsを含んだテーマを配布する場合、そのテーマを適用する側のMTにもProfessionalパックがインストールされている必要があります。もしProfessionalパックがインストールされていない環境でテーマを適用しようとした場合に、「(component名)をインストールしないと、このテーマは動かないよ」といった警告が表示されます。
requireの指定も同じように、必要なimporterが見つからない時にそのエレメントは無視してテーマの適用を続行するか、または、そのテーマの適用自体を中止するか、といった、不測の事態でのコントロールに使われています。

こんにちはaklaswadさん。忙しいのにすいません。
なるほど「component」と「require」はそういう意味なのですね。解りました。この本文と作成したテーマの修正します。
適用されたテーマ自体の認識にでも使っているのかと思っていたのですが、そうではないのですね。DBみたらテーマのフォルダ名が格納されてました。

スクリプトの読み込みが完了していません。

Sign in Sign in Sign in

メールフォーム(Javascriptを使用していません)や、twitter.pngTwitter経由のCommentでもReplyいたします。ただし返信はブログのコメントとして行う事もあります。

Comment Form

QuickTagsHere

EmoticonHere

(入力しない場合「Anonymous」で代替されます)
(公開はされませんが、Gravatarアイコンの取得や、Comment Subscribeの送信先アドレスとして使われます)
(入力すると、コメント表示でユーザー名にリンクが貼られます)
(この情報は、JavascriptによりCookieに保存されます。)

NotifyMail Powered by Comment Subscribe

はてブコメント:

Home > Internet > Movabletype > サクッとMT5テーマ作成ネタ(2)

MT5Techniques

MT5Techniques

2冊目の共著「Movable Type 5 実践テクニック」(シックスアパート監修)が出版されました。(ソフトバンク クリエイティブ刊)

検索
(5)
(6)

別ページに遷移します。

Powered by Hyper Estraier

Feeds
Link Status
In One

なかのひと

位置情報ブログパーツ「なかのひと」

Links
Powered By

Return to page top