Movable Type 4.15 公開ベータテスト開始
Movable Type 4.15 公開ベータテストが開始しました。
Movable Type 4.15 では、パフォーマンス改善に関する様々な機能が追加されています。
- パフォーマンス改善
- パフォーマンスロギング機能
- 再構築の負荷を減らすテンプレートモジュールのキャッシュ
- 詳細な設定が可能になった再構築オプション
- 複数のテンプレートで利用しているテンプレートモジュール、ウィジェトの出力結果を共有して読み込み、再構築の負荷を減らすサーバー・サイド・インクルード
- 全文検索や、結果ページのページ分割など強化されたブログ検索
- 追加・拡張されたテンプレートタグ
- 追加された環境変数
- テンプレートごとのオプション設定インターフェイスの追加
- テンプレート一覧ページのリデザイン
- テンプレートのプレビュー
パッケージは MTOS として配布されています。
以下、各機能について抜粋でまとめてみました。タイトルのリンクをクリックすれば、公式サイトのより詳細な解説ページを参照できます。
1.パフォーマンスロギング機能
以下の内容をログファイルに出力します。
- 使用 OS などウェブサーバー環境に関する情報
- メモリー使用量
- テンプレートタグの処理時間
- リクエストされた URL
- プロセス ID
2.再構築の負荷を減らすテンプレートモジュールのキャッシュ
MTInclude ファンクションタグで読み込むテンプレートモジュールの内容をキャッシュします。
テンプレートモジュールまたはウィジェットの編集画面に次の「Module Caching」というオプションが追加されました(画面に入っていませんがチェックボックスには「ウェブページ」と「アイテム」もあります)。Expireする時間や動作も選択できるようです。
![]()
3.再構築オプションの詳細な設定
次の設定が可能になりました。
- 全てのテンプレートで出力されるページを、バックグラウンドのキューを使用し再構築を定期的に実施し、静的ファイルを出力
- インデックステンプレート、ブログ記事アーカイブテンプレートで出力されるページは、再構築実行時、静的にファイルを出力。それ以外はバックグラウンドのキューを使用して定期的に再構築を実施し、静的にファイルを出力。
4.サーバー・サイド・インクルード
テンプレートモジュールまたはウィジェットを呼び出すとき、サーバー・サイド・インクルード (SSI) を利用して、再構築時に適切なサーバー・サイド・インクルードの記述に変換します。再構築の負荷を削減します。
サーバー・サイド・インクルードの設定にはPHPも含まれているので、標準機能でPHP化が行えます。
テンプレートモジュールまたはウィジェットの編集画面に次の「Server Side Include」というオプションが追加されました。
![]()
ブログ設定画面に次の「Server Side Includes」という項目が追加されており、SSI の方法を選択します。

設定後、テンプレートモジュールまたはウィジェットの編集画面の「Server Side Include」というオプションに反映されます。
![]()
<$MTInclude module="サイドバー"$>
と書かれたテンプレートタグは、内容が展開されるのではなく、
<?php include("/www/htdocs/mt/includes_c/A3s/ssi.html") ?>
というようなインクルード文に置き換わります。
なお、SSI の設定だけではなく、例えばPHPによるSSI を行う場合は、別途PHP化が必要です。
5.検索結果ページのページ分割
キーワードもしくはタグでブログ内を検索した結果ページを分割して出力できます。また、分割されたページをあつかうテンプレートタグを利用して、ページナビゲーションのなどの作成も行えます。
6.追加・拡張されたテンプレートタグ
以下の検索結果関連タグが追加、および拡張されています。
- MTCurrentPage
- 現在表示中のページは検索結果の総ページの何番目かを出力
- MTTotalPages
- 検索結果の総ページ数を出力
- MTPagerBlock
- 検索結果ページの総ページ分繰り返し処理を実施
- MTIfCurrentPage
- ブロックタグを利用して作成したページナビゲーションの中で、現在表示中のページ数を判定
- MTSearchMaxResults
- 環境設定ファイル (mt-config.cgi) で設定されている環境変数 MaxResults の値を出力
- MTPagerLink
- 複数ページの検索結果になり、MTPagerBlock ブロックタグで検索結果ページ分繰り返し処理を行いナビゲーションを作成するとき、各検索結果ページへの URL を出力
- MTIfMoreResults
- 検索結果が設定した1ページに表示する件数より多いかを判定
- MTIfPreviousResults
- 検索結果が複数の検索結果ページになるとき、表示中のページにひとつ前のページがあるかを判定
- MTNextLink
- 複数ページの検索結果になるとき、表示中ページの次ページの URL を出力
- MTPreviousLink
- 複数ページの検索結果になるとき、表示中ページの次ページの URL を出力
- MTInclude
- テンプレートモジュールや、外部ファイルを読み込むときに使用。SSI や PHP のインクルードを利用可能
7.追加された環境変数
以下の環境変数が追加されました。
- AuthorBasenameLimit
- ユーザーアーカイブのベースネームの最大文字数を設定
- PerformanceLogging
- パフォーマンスロギング機能を使用するかどうかの設定
- PerformanceLoggingThreshold
- 処理時間が設定時間未満の場合はパフォーマンスログに出力しないように設定
- RebuildAtDelete
- 記事やウェブページなどを管理画面上で削除処理したとき、自動的に再構築を行うかどうかを設定
- ProcessMemoryCommand
- メモリー使用量の計測時に使用するコマンドを設定したい場合に使用
- SearchResultDisplay
- 検索結果の並べ替えの順序を設定
- SearchDefaultTemplate
- デフォルトで使用するサイト検索結果のテンプレートを設定
- SearchMaxResults
- 検索実行時に返される、結果の最大数を示
- SearchAltTemplate
- 検索結果の代替テンプレートを利用する際にテンプレートを設定
- SearchPrivateTags
- タグ検索で、@ で始まるプライベートタグを検索対象にするかを設定
- IncludesDir
- テンプレートモジュールやウィジェットを SSI インクルードオプションを使用して読み込むときに使用する対象ファイルを格納するディレクトリの名前を設定
8.テンプレート一覧ページのリデザイン
ブログのテンプレート管理画面は、ウィジェットを除く全てのテンプレートがひとつの画面に表示されるようになりました。
![]()
9.テンプレートのプレビュー
インデックステンプレート・アーカイブテンプレートにプレビュー機能が追加されました。フォームボタンの「確認」がそれです。

テンプレートセットで独自のカラムレイアウトを適用させる方法(その1:テーマ切り替えの仕組み)
Movable Type 4.1 で追加されたテンプレートセット機能で、切り替えたテンプレートセットを、さらに「スタイル」を利用してカラムレイアウトを適用さえる方法を紹介します。
カラムレイアウトを切り替えるためには、「スタイル(ブログ管理画面の「デザイン」→「スタイル」)」の機能を少し知っておく必要があります。「スタイル」は、MT3 の時代には「Style Catcher プラグイン」として配布されていた機能で、以前「StyleCatcher リポジトリ公開方法」というエントリーで一度説明しています。
MT4 ではカラムレイアウト選択機能が追加されているので、今回は「汎用ウェブサイト」を用いて、リポジトリの構成とテーマ切り替えの仕組みなどを解説します。
1.リポジトリの構成
「リポジトリ」とは、テーマを公開するにあたっての、必要な資材のセットを指します。
リポジトリの構成は、おおむね次のようになっています。
themes/
├ index.html
├ テーマ名1/
│ ├ screen.css
│ ├ thumbnail.gif
│ └ thumbnail-large.gif
└ テーマ名2/
├ screen.css
├ thumbnail.gif
└ thumbnail-large.gif
:
リポジトリ内に複数のテーマを設定できますが、ひとつでも構いません。
以下、それぞれのファイルの役割を説明します。
index.html
テーマスタイルを登録するファイルです。このファイルに記述したスタイルがスタイル選択画面の選択対象となります。
汎用テンプレートセットの HTML ファイル(universal.html)の内容は次のとおりです。
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="content-script-type" content="text/javascript" />
<meta http-equiv="content-style-type" content="text/css" />
<meta http-equiv="imagetoolbar" content="no" />
<title>Universal Themes</title>
<link rel="theme" type="text/x-theme" href="universal-black/screen.css" />
<link rel="theme" type="text/x-theme" href="universal-blue/screen.css" />
<link rel="theme" type="text/x-theme" href="universal-green/screen.css" />
<link rel="theme" type="text/x-theme" href="universal-pink/screen.css" />
</head>
<body>
<p>This is the Universal Theme set.</p>
</body>
</html>
ご自身のテーマ登録ファイルを作成するときは、このファイルをコピーして index.html として使うと良いでしょう。meta 要素はそのまま、title 要素の内容はスタイル選択画面の「カテゴリ」欄に表示されます。link 要素に記述した screen.css が、実際に選択対象になるテーマ(スタイルシート)です。スタイルシートは冒頭の構成のように、テーマ名ディレクトリの下に配置するのが一般的です。
body要素は空でも構いません。
screen.css
テーマ用スタイルシートです。キモとなるのは、このファイルのヘッダ部分に記述するフォーマット(下)です。
/*
A Six Apart theme adapted for Movable Type default templates
name: Cityscape Paris
designer: Tiffany Chow
designer_url: http://tiffany.vox.com/
layouts: layout-wtt, layout-twt, layout-wt, layout-tw
*/
青色で示した内容が、スタイル切り替え時、右下のセレクトボックスにカラムレイアウトとして反映されます。

thumbnail.gif
テーマ選択時に表示されるテーマのサムネイル画像です。120×90 で表示されます。
テーマスタイルと同じディレクトリに配置してください。
thumbnail-large.gif
サムネイルをクリックした後にこの画像が右側に表示されます。300×250 で表示されます。
テーマスタイルと同じディレクトリに配置してください。
2.テンプレートセットの構成
本体となるテンプレートセットの説明は省略していますが、テンプレートセットにリポジトリを同梱する場合のファイル構成は次のようになります。
テンプレートセット名
├ mt-static/
│ └ plugins/
│ └ テンプレートセット名
│ └ themes/
│ ├ index.html
│ └ テーマ名/
│ ├ screen.css
│ ├ thumbnail.gif
│ └ thumbnail-large.gif
└ plugins/
└ テンプレートセット名/
├ config.yaml
└ templates
└ 各テンプレート
このように、テンプレートセットにリポジトリを同梱する際には、ユーザーがアップロードしやすいよう、テンプレートセットに「mt-static/plugins/テンプレートセット名」のフォルダを作っておき、その下にリポジトリを同梱します。
リポジトリに限らず、mt-static にプラグイン資材をアップロードする時のお作法となっています。
また、上記の構成からお分かりのとおり、テンプレートセットのリポジトリのアップロード位置は、
mt-static/plugins/テンプレートセット名
を推奨します。
その理由は、プラグイン形式で配布するお作法にしたがっていることと、複数のテンプレートセットをアップロードした時に、どのテンプレートセットのリポジトリであるかを、ユーザーが容易に判別できるためです。
mt-static/themes でも構いませんが、この位置ではリポジトリを設定するHTMLファイルが存在しないため、スタイル一覧にサムネイルが表示されない(つまり目的のカラムレイアウト選択ができない)と思います(間違っていたらご指摘ください)。また、mt-static 配下に配置する資材がリポジトリ以外に何かある場合は、アップロード先が分断しないよう一ヶ所にまとめた方が良いでしょう。
3.ユーザーの作成したテーマをスタイル選択画面に表示する
1項でユーザーが任意のリポジトリを作成したと仮定し、ここではそれを読み込ませてみます。
ユーザーの作成したテーマを「デザイン」→「スタイル」画面から読み込ませるには、「+」アイコンをクリックします。

そして、このファイルがあるURLを指定します。

入力するURLは、
http://user-domain/mt-static/plugins/テンプレートセット名/themes/
という感じです。
汎用ウェブサイトでは、universal.html となっていますが、ユーザーがリポジトリを公開する場合は index.html としておいた方が、リポジトリURLの設定が簡単になります。
4.カラムレイアウトの切り替え
スタイル選択画面でカラムを切り替えると、セレクトボックスで選択した screen.css に対応した値(下の青色部分)が、変数 page_layout に選択したカラムレイアウトが保存されます。
/*
A Six Apart theme adapted for Movable Type default templates
name: Cityscape Paris
designer: Tiffany Chow
designer_url: http://tiffany.vox.com/
layouts: layout-wtt, layout-twt, layout-wt, layout-tw
*/
MT インストール時にはデフォルトのレイアウトが適用されます(変数 page_layout に初期値が設定されるようになったのはこのためかもしれません)。
5.インデックステンプレートのスタイルシート
最後に、インデックステンプレートのスタイルシート(styles.css)を説明します。
styles.css はテーマスタイルとベーステーマを呼び出すための import 命令が記述された簡素な内容です。
テーマスタイル(screen.css)は、前述のとおり、独自のファイルを適用できますが、ベーステーマファイル(themes-base/blog.css)は、テンプレートセットやスタイルを切り替えても必ず指定されます。
例として、下に汎用ウェブサイトの styles.css の内容を掲載します。
@import url(<$MTStaticWebPath$>themes-base/blog.css);
@import url(<$MTStaticWebPath$>addons/Commercial.pack/themes/universal-black/screen.css);
つまり、スタイルを切り替えた際には、screen.css のパスが自動的に書き換えられます。
Movable Type 4.1 テンプレートセット(スタイル対応版)
Movable Type 4.1 用のテンプレートセット(スタイル対応版)の配布を開始します。

Movable Type 4.1 で追加されたテンプレートセット機能を用いれば、これまでのようにテキストエリアにテンプレートをペーストせずに、簡単に入れ替えることができます。
このテンプレートセットは、先日公開した「Movable Type 4.1 テンプレートセット」に「スタイル」機能によるカラムレイアウト切り替え機能を追加したもので、テンプレートを編集せずに、8種類のカラムレイアウトを自由に切り替えることができます(下)。

CSS は配布済の Movable Type 4.1 テンプレートと互換性があります(ファイル名のみ変更が必要)。
1.テンプレートセットのダウンロード
「スタイル対応版」のテンプレートセットアーカイブを、下記のページからダウンロードしてください。
以下、テンプレートセットの利用方法です。
2.テンプレートセットのインストール
ダウンロードしたテンプレートセットアーカイブを解凍し、中にある plugins 配下にある KoikikukanTemplateSet フォルダを Movable Type の plugins フォルダに丸ごとアップロードしてください。
また、mt-static/plugins 配下にある KoikikukanTemplateSet フォルダを Movable Type の mt-static/plugins フォルダに丸ごとアップロードしてください。
「システムメニュー」→「プラグイン」でプラグインの一覧が表示されるので、「KoikikukanTemplateSet」が表示されていればインストールOKです。

3.テンプレートセットの入れ替え
ここではインストールされた状態で入れ替える方法を説明します。
ブログ管理画面より「デザイン」→「テンプレート」をクリック。

右下にある「ブログのテンプレートを初期化」をクリック。

「新しいテンプレートセットを適用」を選択し、セレクトボックスから「小粋空間テンプレートセット」を選択。「既存のテンプレートのバックアップを作成する」をチェックすると、入れ替え前のテンプレートのバックアップがとれます。
選択後、右下の「次へ」をクリック。

「確認」をクリック。これでテンプレートセットの入れ替えが開始します。

「テンプレートの初期化を完了しました。」が表示されれば完了です。

サイトの再構築アイコンをクリック。

「すべてのファイル」を選択して「再構築」をクリック。

「すべてのファイルを再構築しました。 」が表示されたら再構築完了です。

前の画面の「サイトを見る」をクリックするか、ブログ管理画面の「サイト表示」のアイコンをクリック。

当サイトのテンプレートセットのデザインで表示されれば完了です。デフォルトデザインのままであればブラウザをリロードしてください。

4.スタイルの切り替え
ここではカラムレイアウトを切り替える方法を説明します。
ブログ管理画面より「デザイン」→「スタイル」をクリック。

「既定のスタイル」の左側にある + マークのアイコンをクリック(「既定のスタイル」の部分は選択状態によって異なります)。

開いたウィンドウに小粋空間テンプレートセットをインストールしたスタティックディレクトリのテーマURLを入力。

具体的には、次のような URL になります。
http://[user-domain]/mt-static/plugins/KoikikukanTemplateSet/themes/
赤色の部分は、MT のスタティックディレクトリ(mt-static ディレクトリがある位置)までの URL を設定してください。
正しい URL であれば、次のような画面になるので、表示されたサムネイル画像をクリック。

右側に大きな画像が表示され、その下にレイアウト選択用のセレクトボックスが表示されます。

セレクトボックスからお好きなレイアウトを選択してください。ここでは「layout-two-column-right」を選択します。

レイアウトの対応は次の通りです。
| 名称 | 意味 |
|---|---|
| layout-three-column | 3カラム・固定レイアウト |
| layout-three-column-liquid | 3カラム・リキッドレイアウト |
| layout-two-column-right | 2カラム(右サイドバー)・固定レイアウト |
| layout-two-column-liquid-right | 2カラム(右サイドバー)・リキッドレイアウト |
| layout-two-column-left | 2カラム(左サイドバー)・固定レイアウト |
| layout-two-column-liquid-left | 2カラム(左サイドバー)・リキッドレイアウト |
| layout-one-column | 1カラム・固定レイアウト |
| layout-one-column-liquid | 1カラム・リキッドレイアウト |
選択後、「デザインを適用」をクリック。

「テーマを適用しました。レイアウトも変更されたので、再構築する必要があります。 設定を有効にするために再構築してください。」と表示されるので、ブログ全体を再構築してください。

スタイルが切り替わりました。サイドバーの内容もテンプレート編集画面で入れ替える必要はありません。
![]()
5.スタイルの編集
スタイルを変更する場合は、インデックステンプレートにある、「スタイルシート(styles-site.css)」を編集してください。
Movable Type 4.1 テンプレートセット
Movable Type 4.1 用のテンプレートセット配布を開始します。

Movable Type 4.1 で追加されたテンプレートセット機能を用いれば、これまでのようにテキストエリアにテンプレートをペーストせずに、簡単に入れ替えることができます。
1.テンプレートセットのダウンロード
テンプレートセットアーカイブを下記のページからダウンロードしてください。
以下、テンプレートセットの利用方法です。
2.テンプレートセットのインストール
ダウンロードしたテンプレートセットアーカイブを解凍し、中にある plugins 配下にある KoikikukanTemplateSet フォルダを Movable Type の plugins フォルダに丸ごとアップロードしてください。
「システムメニュー」→「プラグイン」でプラグインの一覧が表示されるので、「KoikikukanTemplateSet」が表示されていればインストールOKです。

また、images フォルダにある koikikukan.gif(クレジットバナー)をブログディレクトリ(index.html のあるディレクトリ)にアップロードしてください。ブログディレクトリにアップロードすれば、テンプレートを修正せずにクレジットバナーを表示します。
3.テンプレートセットの入れ替え
ここではインストールされた状態で入れ替える方法を説明します。
ブログ管理画面より「デザイン」→「テンプレート」をクリック。

右下にある「ブログのテンプレートを初期化」をクリック。

「新しいテンプレートセットを適用」を選択し、セレクトボックスから「小粋空間テンプレートセット」を選択。「既存のテンプレートのバックアップを作成する」をチェックすると、入れ替え前のテンプレートのバックアップがとれます。
選択後、右下の「次へ」をクリック。

「確認」をクリック。これでテンプレートセットの入れ替えが開始します。

「テンプレートの初期化を完了しました。」が表示されれば完了です。

サイトの再構築アイコンをクリック。

「すべてのファイル」を選択して「再構築」をクリック。

「すべてのファイルを再構築しました。 」が表示されたら再構築完了です。

前の画面の「サイトを見る」をクリックするか、ブログ管理画面の「サイト表示」のアイコンをクリック。

当サイトのテンプレートセットのデザインで表示されれば完了です。デフォルトデザインのままであればブラウザをリロードしてください。

Movable Type 4.1 リリース
Movable Type 4.1 がリリースされました。リリース候補第2版から正式版リリースまでの展開が予想外に早かったです。
本日 Movable Type 4.1 の出荷を開始しました。
昨年の Movable Type 4 のリリースにはじまり、エンタープライズ・ソリューション、コミュニティ・ソリューションのリリース。そして MTOS の発表と、大きな進化を遂げました。また、昨年末からは Movable Type 4.1 のベータテストを開始。みなさまから沢山のフィードバックをいただきました。本当にありがとうございます。
Six Apart 社の皆様、ありがとうございます。そしてお疲れ様でした。
以下に、これまでの 4.1 関連記事を再掲しておきます。
解説記事
- Movable Type 4.1 の「汎用ウェブサイト」テンプレートセットについて
- カスタムフィールドによるアップロード画像をサムネイルで表示するプラグイン 0.02
- カスタムフィールドによるアップロード画像をサムネイルで表示するプラグイン
- Movable Type 4.1 の「ブログのテンプレートを初期化」について
- Movable Type カスタムフィールドの DB スキーマ
- 予約変数一覧 for Movable Type 4.1
- MTLoop タグによる配列変数・ハッシュ変数の制御
- Movable Type 4.1 / MTOS における変数での算術演算子の利用方法
- Movable Type 4.1 / MTOS における配列とハッシュの利用方法
- Movable Type 4.1 カスタムフィールドの使用方法
- Movable Type 4.1 追加タグ一覧
リリース記事
- Movable Type 4.1 リリース候補第2版公開
- Movable Type 4.1 リリース候補版公開
- Movable Type 4.1 ベータ 3 リリース
- Movable Type 4.1 ベータ 2 リリース
- Movable Type 4.1 ベータテスト開始
あと、「汎用ウェブサイト」のスタイルも公開しておきます。
Movable Type 4.1 リリース候補第2版公開
Movable Type 4.1 のリリース候補第2版が公開されました。
Movable Type 4.1 のリリース候補第2版を公開
Movable Type 4.1 RC2 の日本語環境用にビルドされたバッケージをダウンロードできます。ダウンロードページの [Select default language:] セレクトメニューより [Japanese] を選択してください。
Movable Type 4.1 ベータのページでは、追加されるテンプレートタグなどの新機能に関するドキュメントなどを公開しています。また、movabletype.jp のブログでも新機能に関するブログ記事を公開しています。合わせてご利用ください。
この版で Universal Template Set(汎用ウェブサイトのテンプレートセット)が実装されました。これについては別エントリーで紹介致します。
Movable Type 4.1 リリース候補版公開
Movable Type 4.1 のリリース候補版が公開されました。
Movable Type 4.1 RC1 の日本語環境用にビルドされたバッケージをダウンロードできます。ダウンロードページの [Select default language:] セレクトメニューより [Japanese] を選択してください。
Movable Type 4.1 ベータのページでは、追加されるテンプレートタグなどの新機能に関するドキュメントなどを公開しています。また、movabletype.jp のブログでも新機能に関するブログ記事を公開しています。合わせてご利用ください。
ベータ3との差分で、テンプレートタグの追加はありませんでしたが、ContextHandlers.pm の diff を見ると、
@@ -5997,6 +5997,7 @@
}
$ctx->{__stash}{entries} = \@entries;
$ctx->{current_timestamp} = $this_day . '000000';
+ $ctx->{current_timestamp_end} = $this_day . '215959';
$ctx->{__stash}{calendar_day} = $day - $pad_start;
}
defined(my $out = $builder->build($ctx, $tokens, {
というのがありました。
'215959' は '235959' ではないでしょうか。
Movable Type 4.1 ベータ 3 リリース
Movable Type 4.1 ベータ 3 が公開されました。
Movable Type 4.1 Beta3 の日本語環境用にビルドされたバッケージをダウンロードできます。ダウンロードページの [Select default language:] セレクトメニューより [Japanese] を選択してください。
ベータ3では日本語版を選択してダウンロードできるようになっています。また、ベータ2でインストールできなかったという不具合が解消されています。
以下、ベータ1 からですが、テンプレート関係の変更点を挙げておきます。
スタイルシート
4.0x では、「スタイルシート(メイン)」「スタイルシート(ベーステーマ)」と2つのインデックステンプレートがありましたが、4.1 では「スタイルシート」ひとつになりました。

スタイルシートの内容は次のようになっています。インデックステンプレートであった「ベーステーマ」も @import で呼び出されています。

サイドバー
4.0x では「フッター」からテンプレートモジュール「サイドバー(2カラム)」「サイドバー(3カラム)」が呼び出されていましたが、4.1 では「サイドバー」というテンプレートモジュールが呼び出されています。

テンプレートモジュール「サイドバー」では変数 page_layout が判定されて、変数 page_columns にカラム数を設定します。そして、カラム数に応じてウィジェットセット「2カラムのサイドバー」または、「3カラムのサイドバー(メイン)」「3カラムのサイドバー(サブ)」が呼び出されます。

ウィジェットセットでは、ドラッグ&ドロップでウィジェットを設定します。「インストール済」に表示されているウィジェットがファイルに出力されます。

デフォルトで用意されているウィジェットセットです。以前は「First Widget Manager」というサンプル用のウィジェットセットがありましたが、なくなりました。

4,0 のサイドバーのリスト類は、再構築の負荷を考えて MTIf タグで表示されてテンプレートが制限されていましたが、今のところ、ウィジェットにはそのような MTIf タグによる制限がないようです。
構文強調表示
あと、4.0x でコピー&ペーストが不便だったため、ほとんど使っていなかった CodePress による構文強調表示のコピー&ペーストがいつの間にか改善されていました。
予約変数一覧 for Movable Type 4.1
MTIf タグ等でアーカイブ種別を判定するための、Movable Type 4.1 で予め用意された予約変数一覧です。
このエントリーは、MT4.0x 用にエントリーした「予約変数一覧 for Movable Type 4(その1)」を MT4.1 ベータ版の内容に書き換えたものです。赤字は 4.0x から削除された変数、青字は追加された変数です。
archive_listing が新たに追加され、カテゴリーアーカイブとユーザーアーカイブがその対象として追加されています。つまりリスト系のアーカイブがこの変数で判断できます。
これらは lib/MT/WeblogPublisher.pm に記載されているもので、抜粋したものを下記の表にまとめました(使用方法は後述)。
記載に誤りがあったため、マトリクスを修正しました。
修正後(これが正解です)
| Y | M | W | D | C | C | A | A | I | P | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Y | M | W | D | Y | M | W | D | |||||||||
| archive_template main_template | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| datebased_archive | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ||||
| archive_listing | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ||
| datebased_only_archive | ○ | ○ | ○ | ○ | ||||||||||||
| category_archive | ○ | ○ | ○ | ○ | ○ | |||||||||||
| author_archive | ○ | ○ | ○ | ○ | ○ | |||||||||||
| entry_archive feedback_template | ○ | ○ | ||||||||||||||
module_category-monthly_archives | ○ | ○ | ||||||||||||||
module_author-monthly_archives | ○ | ○ | ||||||||||||||
| datebased_yearly_archive module_yearly_archives | ○ | |||||||||||||||
| datebased_monthly_archive | ○ | |||||||||||||||
| datebased_weekly_archive | ○ | |||||||||||||||
| datebased_daily_archive | ○ | |||||||||||||||
| category_yearly_archive | ○ | |||||||||||||||
| category_monthly_archive | ○ | |||||||||||||||
| category_weekly_archive | ○ | |||||||||||||||
| category_daily_archive | ○ | |||||||||||||||
| author_yearly_archive | ○ | |||||||||||||||
| author_monthly_archive | ○ | |||||||||||||||
| author_weekly_archive | ○ | |||||||||||||||
| author_daily_archive | ○ | |||||||||||||||
| entry_template | ○ | |||||||||||||||
| page_archive page_template | ○ | |||||||||||||||
修正前(一部誤りがあります)
| Y | M | W | D | C | C | A | A | I | P | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Y | M | W | D | Y | M | W | D | |||||||||
| archive_template main_template | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
archive_listing | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ||
| datebased_only_archive | ○ | ○ | ○ | ○ | ||||||||||||
| category_archive | ○ | |||||||||||||||
| author_archive | ○ | |||||||||||||||
feedback_template | ○ | ○ | ||||||||||||||
module_category-monthly_archives | ○ | ○ | ||||||||||||||
module_author-monthly_archives | ○ | ○ | ||||||||||||||
| datebased_yearly_archive module_yearly_archives | ○ | |||||||||||||||
| datebased_monthly_archive | ○ | |||||||||||||||
| datebased_weekly_archive | ○ | |||||||||||||||
| datebased_daily_archive | ○ | |||||||||||||||
| category_yearly_archive | ○ | |||||||||||||||
| category_monthly_archive | ○ | |||||||||||||||
| category_weekly_archive | ○ | |||||||||||||||
| category_daily_archive | ○ | |||||||||||||||
| author_yearly_archive | ○ | |||||||||||||||
| author_monthly_archive | ○ | |||||||||||||||
| author_weekly_archive | ○ | |||||||||||||||
| author_daily_archive | ○ | |||||||||||||||
| entry_template | ○ | |||||||||||||||
| page_archive page_template | ○ | |||||||||||||||
一番上にある略号の意味は次の通りです。
- Y:年別アーカイブ
- M:月別アーカイブ
- W:週別アーカイブ
- D:日別アーカイブ
- C:カテゴリーアーカイブ
- A:ユーザーアーカイブ
- I:ブログ記事アーカイブ
- P:ウェブページアーカイブ
カテゴリーアーカイブとユーザーアーカイブは、年別・月別・週別・日別との組み合わせもあります。
○印がついているのが、そのアーカイブを表示する時に、変数に "1" が設定されていることを示しています。●はデフォルトテンプレートで、テンプレート上に MTSetVar タグで設定されているものを示しています。
例えば、アーカイブ種別が「年別・月別・週別・日別」であることを判定したい場合は、
<MTIf name="datebased_only_archive">
:
</MTIf>
とテンプレート(またはテンプレートモジュール)に書きます。
このタグが書かれたテンプレートやテンプレートモジュールが「年別・月別・週別・日別」として実行される場合、MTIf タグのブロック内部が実行されます。
アーカイブ種別が「ブログ記事・ウェブページ」であることを判定したい場合は
<MTIf name="feedback_template">
:
</MTIf>
と書きます。このタグが書かれたテンプレートやテンプレートモジュールが「ブログ記事・ウェブページ」として実行される場合、MTIf タグのブロック内部が実行されます。
これらを利用すれば、独自の変数を用意する必要はありません。
2008.02.25
認識に誤りがあったため、マトリクスを修正しました。
MTLoop タグによる配列変数・ハッシュ変数の制御
Movable Type 4.0 では管理画面用だった MTLoop タグが、Movable Type 4.1 ではテンプレート上で利用できるようになりました。これにより配列やハッシュの取得が MTLoop タグで実現できるようになります。
以下、MTLoop での配列とハッシュの利用方法を紹介します。
1.配列を取得する
MTFor タグで設定し、MTLoop タグで取得するサンプルを示します。
<mt:for var="i" from="0" to="9">
<mt:setvar name="foo[$i]" value="$i">
</mt:for>
<mt:loop name="foo">
<mt:getvar name="__value__">
</mt:loop>
MTLoop タグの使い方は、name モディファイアに配列変数名を設定するだけで、ここでは foo を設定しています。
配列変数 foo の値は予約変数 __value__ に自動的に設定されるので、あとは MTGetVar タグの name モディファイアに指定するだけです。
MTLoop タグの部分を MTFor タグで書くと
<mt:for var="i" from="0" to="9">
<mt:setvar name="foo[$i]" value="$i">
</mt:for>
となるので、MTLoop タグの方が簡単に書けることがお分かりになると思います。
なお、MTLoopタグでは配列のインデックスが0から処理が開始されるため、設定側の MTFor タグの from モディファイアは「0」、to モディファイアは「9」を設定しています。
2.ハッシュを取得する
4.1 ベータ 2 から新しく追加された sethashvar タグ(ハッシュをまとめて定義できるタグ)を用いて、ハッシュを作成し、MTLoop タグで取得するサンプルを示します。
<mt:sethashvar name="week">
<mt:setvar name="mon" value="Monday">
<mt:setvar name="tue" value="Tuesday">
<mt:setvar name="wed" value="Wednesday">
<mt:setvar name="thu" value="Thursday">
<mt:setvar name="fri" value="Friday">
<mt:setvar name="sat" value="Saturday">
<mt:setvar name="sun" value="Sunday">
</mt:sethashvar>
<mt:loop name="week">
<$mt:getvar name="__key__"$> <$mt:getvar name="__value__"$>
</mt:loop>
テンプレートを再構築すると、下のように出力されます。
sun Sunday
fri Friday
tue Tuesday
sat Saturday
mon Monday
wed Wednesday
thu Thursday
配列変数の時と同様、name モディファイアに配列変数名を設定します。ここでは week を設定します。
配列変数 week のキーの値は予約変数 __key__ に、キーに対応する値は予約変数 __value__ に自動的に設定されるので、それぞれ MTGetVar タグの name モディファイアに指定します。
ハッシュは配列のような順序性がありませんが、sort_by モディファイアを設定することで、一定の規則にしたがって出力されます。
キーの文字列順で並べ替え
<mt:loop name="[変数名]" sort_by="key">
キーの文字列順(逆順)で並べ替え
<mt:loop name="[変数名]" sort_by="key reverse">
キーに対応する値の文字列順で並べ替え
<mt:loop name="[変数名]" sort_by="value">
キーに対応する値の文字列順(逆順)で並べ替え
<mt:loop name="[変数名]" sort_by="value reverse">
キーに対応する値の文字を数値として比較・並べ替え
<mt:loop name="[変数名]" sort_by="value numeric">
キーに対応する値の文字を数値として比較・並べ替え(逆順)
<mt:loop name="[変数名]" sort_by="value numeric reverse">
Movable Type 4.1 ベータ 2 リリース
Movable Type 4.1 ベータ 2 が公開されました。
ベータ1も含め、ファイルのアップロード画面およびアイテム管理画面が変わっていましたので、以下に紹介します。
ベータ2ではファイルのアップロード画面でフォルダの選択画面が追加されました。

アップロードしたファイルを使ってブログ記事を作成する時の位置指定に「なし」が追加されました。

ベータ1から、アイテムの一覧画面が変更されています。画像やファイル名をクリックすると情報を編集できるようになりました。

画像をクリックすると拡大表示される機能はそのままです。
これがアイテムの編集画面です。アイテムの名前や説明、タグが編集可能です。
右下にある「アイテムの埋め込み」をクリックすると、

このようにテキストフィールドにアイテムのURLが表示されます。

Movable Type 4.1 / MTOS における変数での算術演算子の利用方法
昨日エントリーした「Movable Type 4.1 / MTOS における配列とハッシュの利用方法」に加え、MT4.1/MTOS では算術演算子の利用が可能になりました。
詳細は後述しますが、可能な演算は、
- 加算(+)
- 減算(-)
- 乗算(*)
- 除算(/)
- 剰余(%)
- インクリメント(++)
- デクリメント(--)
で、変数の演算結果を同一変数に保持したり、MTIf タグ等での判定や、判定と同時に演算すること等が可能です。
ということで、こちらについても以下に利用方法をまとめてみました。なお、利用可能と思われるテンプレートタグは下記の通りです。
- MTIf
- MTUnless
- MTGetVar
- MTSetVar
- MTSetVarBlock
- MTSetVarTemplate
1.加算
フォーマット
op モディファイアに"+"または"add"を設定します。定義済みの変数に加算する場合は value モディファイアを記述し、加算したい値を設定します。
値を加算のみする場合
<$mt:setvar name="[変数名]" op="+" value="[加算値]"$>
または
<$mt:setvar name="[変数名]" op="add" value="[加算値]"$>
加算後に表示する場合
<$mt:getvar name="[変数名]" op="+" value="[加算値]"$>
または
<$mt:getvar name="[変数名]" op="add" value="[加算値]"$>
加算した結果を判定する場合(例は等しい場合を判定)
<mt:if name="[変数名]" op="+" value="[加算値]" eq="[比較値]">
または
<mt:if name="[変数名]" op="add" value="[加算値]" eq="[比較値]">
サンプル
変数hogeに+1した結果を設定
<$mt:setvar name="hoge" value="1"$>
<$mt:setvar name="hoge" op="+" value="1"$>
変数hogeに+1した結果を表示
<$mt:setvar name="hoge" value="1"$>
<$mt:getvar name="hoge" op="+" value="1"$>
変数hogeに+1した結果が2であるかを判定
<$mt:setvar name="hoge" value="1"$>
<mt:if name="hoge" op="+" value="1" eq="2">
OK
<mt:else>
NG
</mt:if>
2.減算
フォーマット
op モディファイアに"-"または"sub"を設定します。定義済みの変数に減算する場合は value モディファイアを記述し、減算したい値を設定します。
値を減算のみする場合
<$mt:setvar name="[変数名]" op="-" value="[減算値]"$>
または
<$mt:setvar name="[変数名]" op="sub" value="[減算値]"$>
減算後に表示する場合
<$mt:getvar name="[変数名]" op="-" value="[減算値]"$>
または
<$mt:getvar name="[変数名]" op="sub" value="[減算値]"$>
減算した結果を判定する場合(例は等しい場合を判定)
<mt:if name="[変数名]" op="-" value="[減算値]" eq="[比較値]">
または
<mt:if name="[変数名]" op="sub" value="[減算値]" eq="[比較値]">
サンプル
変数hogeから-1した結果を設定
<$mt:setvar name="hoge" value="10"$>
<$mt:setvar name="hoge" op="-" value="1"$>
変数hogeから-1した結果を表示
<$mt:setvar name="hoge" value="10"$>
<$mt:getvar name="hoge" op="-" value="1"$>
変数hogeに-1した結果が2であるかを判定
<$mt:setvar name="hoge" value="3"$>
<mt:if name="hoge" op="-" value="1" eq="2">
OK
<mt:else>
NG
</mt:if>
3.乗算
フォーマット
op モディファイアに"*"または"mul"を設定します。定義済みの変数に乗算する場合は value モディファイアを記述し、乗算したい値を設定します。
値を乗算のみする場合
<$mt:setvar name="[変数名]" op="*" value="[乗数値]"$>
または
<$mt:setvar name="[変数名]" op="mul" value="[乗数値]"$>
乗算後に表示する場合
<$mt:getvar name="[変数名]" op="*" value="[乗数値]"$>
または
<$mt:getvar name="[変数名]" op="mul" value="[乗数値]"$>
乗算した結果を判定する場合(例は等しい場合を判定)
<mt:if name="[変数名]" op="*" value="[乗数値]" eq="[比較値]">
または
<mt:if name="[変数名]" op="mul" value="[乗数値]" eq="[比較値]">
サンプル
変数hogeに2倍した結果を変数に設定
<$mt:setvar name="hoge" value="1"$>
<$mt:setvar name="hoge" op="*" value="2"$>
変数hogeを2倍した結果を表示
<$mt:setvar name="hoge" value="1"$>
<$mt:getvar name="hoge" op="*" value="2"$>
変数hogeに2倍した結果が6であるかを判定
<$mt:setvar name="hoge" value="3"$>
<mt:if name="hoge" op="*" value="2" eq="6">
OK
<mt:else>
NG
</mt:if>
4.除算
フォーマット
op モディファイアに"/"または"div"を設定します。定義済みの変数に除算する場合は value モディファイアを記述し、除算したい値を設定します。
値を除算のみする場合
<$mt:setvar name="[変数名]" op="/" value="[除数値]"$>
または
<$mt:setvar name="[変数名]" op="div" value="[除数値]"$>
除算後に表示する場合
<$mt:getvar name="[変数名]" op="/" value="[除数値]"$>
または
<$mt:getvar name="[変数名]" op="div" value="[除数値]"$>
除算した結果を判定する場合(例は等しい場合を判定)
<mt:if name="[変数名]" op="/" value="[除数値]" eq="[比較値]">
または
<mt:if name="[変数名]" op="div" value="[除数値]" eq="[比較値]">
サンプル
変数hogeを2で割った結果を変数に設定
<$mt:setvar name="hoge" value="10"$>
<$mt:setvar name="hoge" op="/" value="2"$>
変数hogeを2で割った結果を表示
<$mt:setvar name="hoge" value="10"$>
<$mt:getvar name="hoge" op="/" value="2"$>
変数hogeを2で割った結果が3であるかを判定
<$mt:setvar name="hoge" value="6"$>
<mt:if name="hoge" op="/" value="2" eq="3">
OK
<mt:else>
NG
</mt:if>
5.剰余
フォーマット
op モディファイアに"%"または"mod"を設定します。定義済みの変数に剰余する場合は value モディファイアを記述し、剰余したい値を設定します。
値を剰余のみする場合
<$mt:setvar name="[変数名]" op="%" value="[剰余値]"$>
または
<$mt:setvar name="[変数名]" op="mod" value="[剰余値]"$>
剰余後に表示する場合
<$mt:getvar name="[変数名]" op="%" value="[剰余値]"$>
または
<$mt:getvar name="[変数名]" op="mod" value="[剰余値]"$>
剰余した結果を判定する場合(例は等しい場合を判定)
<mt:if name="[変数名]" op="%" value="[剰余値]" eq="[比較値]">
または
<mt:if name="[変数名]" op="mod" value="[剰余値]" eq="[比較値]">
サンプル
変数hogeを3で割った余りを変数に設定
<$mt:setvar name="hoge" value="5"$>
<$mt:setvar name="hoge" op="%" value="3"$>
変数hogeを3で割った余りを表示
<$mt:setvar name="hoge" value="5"$>
<$mt:getvar name="hoge" op="%" value="3"$>
変数hogeを3で割った余りが1であるかを判定
<$mt:setvar name="hoge" value="7"$>
<mt:if name="hoge" op="%" value="3" eq="1">
OK
<mt:else>
NG
</mt:if>
6.インクリメント
「インクリメント」とは、値に1を加算することを指します。
フォーマット
op モディファイアに"++"または"inc"を設定します。なお、定義済みの変数にしかインクリメントすることはできません。
値をインクリメントのみする場合
<$mt:setvar name="[変数名]" op="++"$>
または
<$mt:setvar name="[変数名]" op="inc"$>
インクリメント後に表示する場合
<$mt:getvar name="[変数名]" op="++"$>
または
<$mt:getvar name="[変数名]" op="inc"$>
インクリメントした結果を判定する場合(例は等しい場合を判定)
<mt:if name="[変数名]" op="++" eq="[比較値]">
または
<mt:if name="[変数名]" op="inc" eq="[比較値]">
サンプル
変数hogeをインクリメント
<$mt:setvar name="hoge" value="1"$>
<$mt:setvar name="hoge" op="++"$>
変数hogeをインクリメントした結果を表示
<$mt:setvar name="hoge" value="1"$>
<$mt:getvar name="hoge" op="++"$>
変数hogeをインクリメントした結果が2であるかを判定
<$mt:setvar name="hoge" value="1"$>
<mt:if name="hoge" op="++" eq="2">
OK
<mt:else>
NG
</mt:if>
7.デクリメント
「デクリメント」とは、値から1を減算することを指します。
フォーマット
op モディファイアに"--"または"dec"を設定します。なお、定義済みの変数にしかデクリメントすることはできません。
値をデクリメントのみする場合
<$mt:setvar name="[変数名]" op="--"$>
または
<$mt:setvar name="[変数名]" op="dec"$>
デクリメント後に表示する場合
<$mt:getvar name="[変数名]" op="--"$>
または
<$mt:getvar name="[変数名]" op="dec"$>
デクリメントした結果を判定する場合(例は等しい場合を判定)
<mt:if name="[変数名]" op="--" eq="[比較値]">
または
<mt:if name="[変数名]" op="dec" eq="[比較値]">
サンプル
変数hogeをデクリメント
<$mt:setvar name="hoge" value="10"$>
<$mt:setvar name="hoge" op="--"$>
変数hogeをデクリメントした結果を表示
<$mt:setvar name="hoge" value="10"$>
<$mt:getvar name="hoge" op="--"$>
変数hogeをデクリメントした結果が1であるかを判定
<$mt:setvar name="hoge" value="2"$>
<mt:if name="hoge" op="--" eq="1">
OK
<mt:else>
NG
</mt:if>
8.注意事項
文字列や数字を含んだ文字列に演算を行っても何も行われません。また、ベータ1a版の動作確認では、他のリスト系テンプレートタグとの組み合わせでは初期値が1でないと機能しないようです(下記)。
NG(初期値0)
<$mt:setvar name="hoge" value="0"$>
<MTEntries>
<$mt:setvar name="hoge" op="++"$>
</MTEntries>
<$mt:getvar name="hoge">
OK(初期値1)
<$mt:setvar name="hoge" value="1"$>
<MTEntries>
<$mt:setvar name="hoge" op="++"$>
</MTEntries>
<$mt:getvar name="hoge">
Movable Type 4.1 / MTOS における配列とハッシュの利用方法
公にアナウンスされていないようですが、MT4.1/MTOS では変数で配列とハッシュの操作が可能になり、変数処理がよりプログラマブルになりました。
ということで、以下に利用方法をまとめてみました。
1.配列
配列とは、同じ型のデータを連続的に並べた集合を指します。同一の変数名にインデックス(添え字)を付与することでデータを識別することができます。
例えば、week という変数に、Monday から Sunday までの文字列を設定するには、
week[0] = 'Monday'
week[1] = 'Tuesday'
week[2] = 'Wednesday'
week[3] = 'Thursday'
week[4] = 'Friday'
week[5] = 'Saturday'
week[6] = 'Sunday'
という感じになります。
MTSetVar による配列の設定
MTSetVar タグで配列を設定する方法は2通りあります。name モディファイアの変数名に直接インデックスを記述して、value モディファイアに値を設定するか(下)、
<MTSetVar name="week[0]" value="Mon">
<MTSetVar name="week[1]" value="Tue">
<MTSetVar name="week[2]" value="Wed">
:
index モディファイアを記述し、そこにインデックスを設定します(下)。value モディファイアは同じです。
<MTSetVar name="week" index="0" value="Mon">
<MTSetVar name="week" index="1" value="Tue">
<MTSetVar name="week" index="2" value="Wed">
:
MTSetVarBlock による配列の設定
MTSetVar タグに配列を設定する方法も、MTSetVar タグと大体同じで、name モディファイアの変数名に直接インデックスを記述し、value モディファイアの代わりにブロック内に値を記述します。
<MTSetVarBlock name="week[0]">
:
</MTSetVarBlock>
<MTSetVarBlock name="week[1]">
:
</MTSetVarBlock>
<MTSetVarBlock name="week[2]">
:
</MTSetVarBlock>
:
または、index モディファイアを記述し、そこにインデックスを設定します(下)。
<MTSetVarBlock name="week" index="0">
:
</MTSetVarBlock>
<MTSetVarBlock nam