Movable Type 個人ライセンス(無償)のダウンロード方法が変更
数日前から、Movable Type 個人ライセンス(無償)のダウンロード方法が、大幅に簡単になりました。
1.新しいダウンロード方法
ECバイヤーズのページに進み、利用許諾に同意すれば、いきなりダウンロード画面が表示され、MT4.1-ja または MT3.36-ja がダウンロードできます。

以前の、「メールアドレス登録→ライセンスキー取得」という作業やダウンロード回数の制限がなくなったので、かなりダウンロードしやすくなっています。ちょっと使ってみたいという方から、バージョンアップで新たにダウンロードされる方まで、朗報といえるでしょう。
参考までに、過去のダウンロード方法も次に掲載しておきます。
2.過去のダウンロード方法
利用許諾に同意したあと、さらにメールアドレスを登録します。

メールアドレスを確認して、「申込」をクリック。

申し込み完了で、登録したメールアドレスにメールが送信。

送信されたメールに記載されたダウンロード認証画面にアクセス。

メールに記載された「ダウンロード認証キー」を入力して、「次へ」をクリック。

これでようやくダウンロードできます。ダウンロード回数は3回で、新たにダウンロードする必要がある場合は、メールアドレスを再登録します。

3.その他
この変更によって、メールアドレスをお持ちでない方(という人はいないと思いますが)も、個人ライセンス版のダウンロードが可能になります。
オープン化などに伴って、個人ライセンスのダウンロードに対する規制も緩和されたのでしょうか。
アワーズイン阪急ホテルで
LogCommentAuthors プラグイン
「月別などのコメント投稿ランキングを表示したい」というご要望をいただきましたので、プラグインを作成してみました。
1.主な機能
- システムログに記録されたコメントより投稿者の一覧を表示します
- 年月指定が可能です
- 投稿件数順による並び替えが可能です
- 一覧から特定の投稿者を非表示にできます
コメント投稿者のURLやメールアドレスのリンク設定はできません。
またブログの文字コードをUTF-8以外で運用している場合の動作については確認できておりません。
2.プラグインのダウンロード
下記のリンクをクリックしてプラグインをダウンロードしてください。
なお、プラグイン開発やサポート等にご支援・ご賛同くださる方からの寄付をお待ち申し上げます。
上記の「Make a Donation」のリンクをクリックすると Paypal によるお支払いページにジャンプします。
3.プラグインのアップロード
ダウンロードしたプラグインを解凍し、中にあるLogCommentAuthors.pl を plugins ディレクトリに丸ごとアップロードしてください。
ブログ管理メニューの「設定」→「プラグイン」で LogCommentAuthors が表示されればインストール完了です。
4.提供するテンプレートタグ・モディファイア
テンプレートタグ
- MTLogCommentAuthors
- ログに記録されたコメント一覧のためのブロックタグ
- MTLogCommentAuthor
- コメント投稿者を出力するファンクションタグ
- MTLogCommentAuthorCount
- コメント投稿者別の投稿数を出力するファンクションタグ
モディファイア
- lastn
- 最新のコメントから収集する投稿者数
- sort_order
- descend 指定で投稿の多い順に表示/ascend 指定で投稿の少ない順に表示
- year
- コメント投稿年(コメント投稿月と併用)
- month
- コメント投稿月。1月など一桁の月は、1でも01でも可能です。
- exclude_author
- 非表示にしたいコメント投稿者
※モディファイアを複雑に組み合わせた場合の動作は保障できません。
5.使用例
ログに記録されたすべてのコメント投稿者と投稿数を表示
<ul>
<MTLogCommentAuthors>
<li><$MTLogCommentAuthor$> [<$MTLogCommentAuthorCount$>]</li>
</MTLogCommentAuthors>
</ul>
ログに記録された2008年3月分のコメント投稿者と投稿数を、投稿数の多い順に表示
<ul>
<MTLogCommentAuthors year="2008" month="3" sort_order="descend">
<li><$MTLogCommentAuthor$> [<$MTLogCommentAuthorCount$>]</li>
</MTLogCommentAuthors>
</ul>
さらにブログ管理者(yujiro)の分を非表示にする
<ul>
<MTLogCommentAuthors year="2008" month="3" sort_order="descend" exclude_author="yujiro">
<li><$MTLogCommentAuthor$> [<$MTLogCommentAuthorCount$>]</li>
</MTLogCommentAuthors>
</ul>
6.ライセンス
デュアルライセンスです。
6.1 MT4.1個人ライセンス/MT4.1商用ライセンスと組み合わせる場合
- 無料で利用できます。
- 改変・再配布は自由ですが、改変して再配布する場合、原作者のクレジットを必ず残してください。
6.2 MTOSと組み合わせる場合
- 無料で利用できます。
- GPLv2に従います。
livedoor Reader のおすすめフィードに「AMNパートナーブログ」登場
3月26日より、livedoor Reader のオススメフィードのコーナーに、AMNパートナーブログのOPMLが掲載されています。
livedoor ReaderのおすすめフィードにAMNパートナーブログが登場
OPML(Outline Processor Markup Language:アウトライン・プロセッサ・マークアップ言語)は、ブログのRSSフィードを一括でRSSリーダーにインポートする、XML形式のファイルです。
ここでは、「AMNパートナーブログ」をRSSリーダーに登録する方法として次の2通りを紹介します。
- livedoor リーダーに登録
- OPML を他の RSS リーダー(ここでは Google リーダー)に登録
1.livedoor Readerに登録
livedoor Reader のサイトに進み、「無料登録/ログイン」をクリック。

ログイン。登録していない方はここで「新規登録」をクリック。

「OPMLでおすすめフィードを一気に登録!」をクリック。

AMNパートナーブログの下にある「内容を確認」をクリック。

読みたいブログをチェックして(基本的に全部チェックしておくことをおすすめします)、一番下の「インポート」をクリック。
すでに登録されているサイトは「登録済み」となりチェックボックスは表示されません。

2.OPMLを他の RSS リーダー(Google リーダー)に登録
livedoor Reader のサイトに進み、右側にある「おすすめフィード」をクリック。

AMNパートナーブログの下にある「OPML」を右クリックして、「(Firefoxの場合)名前を付けて保存」を選択。OPMLをローカルPCに保存します。

Google リーダーの場合、右上のメニューにある「設定」をクリック。

「インポート/エクスポート」をクリック。

「OPML ファイルを選択:」欄に先ほどダウンロードしたOPMLを指定して、「アップロード」をクリック。

これでインポートされました。

WordPress Japan が閉鎖されます
WordPress ME ユーザのよりどころであった「WordPress Japan」が、2008年3月末で閉鎖されます。

突然の閉鎖なので、何か事情があったものと察しています。
私も WordPress ME は、別のサイトで使わせて頂いています。閉鎖されるのは非常に残念ですが、永らくの運営、本当にお疲れ様でした。
WordPress ME はなくなりますが、WordPress 日本語版は、WordPress 日本語ローカルサイトから引き続きダウンロードできます。
WordPress 日本語版についての情報もいくつか掲載されています。
「日本語版と ME 版の比較一覧」から、表記の違いについて抜粋しておきます。
WordPress 日本語版では、次の部分が英語表記になります。
- ダッシュボードのニュースとフィード
WordPress 日本語版では、次の部分が日本語表記になります。
- 本体ファイルの翻訳が必要なエラーメッセージ
- 本体付属プラグインの説明書き
公式サイトではサポートサイトも開設されています。
MT4LP5
企業サイト構築におけるCMSとしてのMT4.1を掘り下げることをテーマとして開催されるイベント「MT4LP5」のお知らせです(すでに満席ですが...)
日時:2008年4月5日(土)12:10~18:30(開場:11:40) * 自由席。途中入場/途中退場可
会場:ベルサール原宿
定員:400名
主催:CSS Nite実行委員会
タイムテーブル:
| 時間 | A面 | B面 |
|---|---|---|
| 11:40 | 開場 | |
| 12:10 | Keynote:なぜMTは「商用CMS一覧」に載せられなかったのか(過去形)/安田 英久(Web担当者Forum 編集長) | |
| 12:30 | A1:Movable Typeテンプレートの基本/鷹野雅弘(スイッチ) | B1:プラグイン開発と応用/関根 元和(エムロジック) |
| 13:30 | 休憩(20分) | |
| 13:50 | A2:実践!CMSとして使うMT4/蒲生 トシヒロ(有限会社ITプロフェッショナル) | B2:プラグインを利用したカスタマイズ/藤本 壱 |
| 14:50 | 休憩(20分) | |
| 15:10 | A3:小中規模コーポレートサイト構築における実用的Tips/黒野 明子 | B3:管理画面のカスタマイズ/野田 純生(アルファサード有限会社) |
| 16:10 | 休憩(30分) | |
| 16:40 | A4:MTタグ、JavaScript を用いたサイトのカスタマイズ/荒木勇次郎(小粋空間) | B4:MTの設置・運用に関するTIPS/丹羽 章 |
| 17:40 | 移動(B会場の方はA会場に移動) | |
| 17:50 | パネルディスカッション:各セッションの出演者に加え、『Movable Typeプロフェッショナル・スタイル』の著者が登壇します。質疑応答を中心に、パネルディスカッションを行います。 | |
| 18:30 | 終了 | |
私はA面の最後で講演します。
公式サイトに掲載されている内容は書籍からの抜粋なので、実際にはもう少し違ったお話をさせて頂く予定です(正確に言うと、まだきちんと決まってません...)。
連動書籍「Movable Typeプロフェッショナル・スタイル」も予約中です。
![]() | Movable Type プロフェッショナル・スタイル MT4.1対応 CSS Nite 上ノ郷谷 太一 蒲生 トシヒロ 毎日コミュニケーションズ 2008-04-08 売り上げランキング : 13085 Amazonで詳しく見る by G-Tools |
カテゴリーリストにカスタムフィールドの画像を表示する
Category:[カスタムフィールド, カテゴリー]
Tag:[Category, CutomFields, MovableType]
Permalink
Movable Type のカテゴリーリストに、カスタムフィールドの画像を表示するカスタマイズです。
次のように、カテゴリー別の画像を簡単に与えることができます。

1.カスタムフィールドの作成
カテゴリーにカスタムフィールドを作成します。ここでは CategoryImage という名前のテンプレートタグにします。

2.カテゴリーに画像の追加
各カテゴリーに表示されている「Imageを選択」をクリックして、画像を追加します。

画像を選択した後、必ず保存をクリックしてください。何回か試して正常に表示されないことがあったのですが、どうも保存をクリックするのを忘れていたようです。

3.サブテンプレートの追加
冒頭のサンプルは、デフォルトテンプレートのサイドバーに下記のサブテンプレートを追加しました。階層表示でない、MTCategories タグを久しぶりに使ってみました。
青色部分がカスタムフィールド用タグです。
<mt:IfArchiveTypeEnabled archive_type="Category">
<div class="widget-archive widget-archive-category widget">
<h3 class="widget-header">カテゴリ</h3>
<div class="widget-content">
<ul class="widget-list">
<mt:Categories>
<mt:ifNonZero tag="mt:CategoryCount">
<li class="widget-list-item"><MTCategoryImageAsset><img src="<$MTAssetURL$>" style="vertical-align:middle" /> </MTCategoryImageAsset><a href="<$mt:CategoryArchiveLink$>"<mt:IfNonEmpty tag="mt:CategoryDescription"> title="<$mt:CategoryDescription$>"</mt:IfNonEmpty>><$mt:CategoryLabel$> (<$mt:CategoryCount$>)</a>
<mt:else>
<li class="widget-list-item"><MTCategoryImageAsset><img src="<$MTAssetURL$>" style="vertical-align:middle" /> </MTCategoryImageAsset><$mt:CategoryLabel$>
</mt:ifNonZero>
</li>
</mt:Categories>
</ul>
</div>
</div>
</mt:IfArchiveTypeEnabled>
赤色部分は、画像の垂直方向の位置揃えのための style 属性です。サンプルでは img 要素に直接与えてしまっているので、適宜スタイルシートで設定するようにしてください。
「CMSとして使うMovable Typeガイドブック」 販売状況
「「Movable Type WEBデザインの新しいルール」 販売状況と紹介リンク等」に引き続き、14日に発売された「CMSとして使うMovable Typeガイドブック」 の販売状況です。
おかげさまで、2冊目も好調な売れ行きです。年末からドタバタでしたが、年末年始休暇もすべて返上し、部屋に引きこもって書き上げた甲斐がありました。お買い上げ下さった皆様、ありがとうございます!
![]() | CMSとして使うMovable Typeガイドブック 黒野 明子 荒木 勇次郎 翔泳社 2008-03-14 売り上げランキング : 859 Amazonで詳しく見る by G-Tools |
Amazon売り上げランキング
画面は380位ですが、私が確認した限りでは(たしか)283位が最高でした。

翔泳社の本ランキング:3位(3/19現在)
今回も大健闘です。

cbookランキング:7位(3/10~3/16)
コンピュータ書籍専門ネット書店でも大健闘です。

ちなみに当ブログの Amazon 経由の販売数が、「Movable Type WEBデザインの新しいルール」 の(同一日数ベースでの)販売数をかなり上回っています。ありがとうございます。
mt-csv2customfields
「CSV形式のデータを Movable Type のカスタムフィールドに一括読み込みさせたい」という要望がかなり多いようなので、スクリプト mt-csv2customfields.cgi を作成しました。
CSVファイルを読み込み、新規ブログ記事のカスタムフィールドに登録します。
1.機能
今のところできるのは次の通りです。
- 新規ブログ記事のみ対応
- タイトルの書き込み
- 本文の書き込み
- カテゴリーまたはサブカテゴリーの書き込み。カテゴリーが存在しない場合は新規作成(トップレベルのみ)
- タグの書き込み(複数設定可能)
- カスタムフィールド(テキスト形式)の書き込み
- 複数のカスタムフィールドに対応
- 既存のブログ記事タイトルを指定した場合、カスタムフィールドのみ上書き(他のフィールドの内容は無視)
CSVのフォーマット
CSVデータは次のフォーマットにしてください。
1行目:
タイトル:'title'を設定
本文:'text'を設定
カテゴリー:'category'を設定
タグ:'tags'を設定
カスタムフィールド:カスタムフィールドのベースネームを設定
2行目以降:フィールドに対応したデータ。
カテゴリーは新規のトップカテゴリー(他と重複しない名称)または既存のカテゴリー名(サブカテゴリーであればサブカテゴリー名のみ設定)。
タグは新規のタグも大丈夫で、":"で区切れば複数設定できます。
なお、CSVデータはUTF-8のものしか確認ができておりません。
3.CSVデータのサンプル
title,text,category,tags,test1,test2,test3
たいとる1,てきすとの内容1,カテゴリー1,タグ1:タグ2,カスタムフィールド1の内容1,カスタムフィールド2の内容1,カスタムフィールド3の内容1
たいとる2,てきすとの内容2,カテゴリー2,タグ3:タグ4,カスタムフィールド1の内容2,カスタムフィールド2の内容2,カスタムフィールド3の内容2
たいとる3,てきすとの内容3,カテゴリー3,タグ5:タグ6,カスタムフィールド1の内容3,カスタムフィールド2の内容3,カスタムフィールド3の内容3
4.ライセンス
4.1 商用ライセンスの Movable Type で利用する場合
商用ライセンスの Movable Type で利用する場合は、有償(1000円/1サーバ)とさせて頂きます。お振込み方法につきましては、お問い合わせよりメールにてご連絡ください。
4.2 個人ライセンス(無償)と組み合わせる場合
個人ライセンス(無償)と組み合わせる場合は、無償でご利用ください。
5.インストール
下記のファイルをダウンロードして、展開した中にあるmt-csv2customfields.cgi をアプリケーションディレクトリにアップロードし、CGIが実行可能なパーミッションを変更してください。
たいしたスクリプトではありません。α版ということでお試しください。
- 修正履歴
- v0.01 2008.03.24 初版
- v0.02 2008.04.21 カテゴリーとタグに対応。head / body 要素の重複削除
6.利用方法
ブラウザから mt-csv2customfields.cgi にアクセスすると、次のような画面が表示されるので、ブログのID、ユーザーIDを数字で設定し、CSVファイルを選択して送信をクリックしてください。

正常に実行できれば次のような画面が表示されます。

登録後のブログ記事編集画面です。

IE6による印刷で「このページのスクリプトでエラーが発生しました。」のエラーが表示される問題について
IE6 でブラウザに表示しているページを印刷する時、次のような「このページのスクリプトでエラーが発生しました。」「オブジェクトでサポートされていないプロパティまたはメソッドです。」というエラーが発生することがあります。
![]()
調べたところ、マークアップの
id="tags"
という id 属性の存在が影響していることが判明しました。
実は当ブログで配布しているテンプレートで、この ID 属性を使用しています。
現在、テンプレートをご利用の方は、(閲覧ユーザが)IE6 で印刷する場合を考慮し、「サイドバー」に設定しているタグクラウドの id 属性値(赤色部分)を、他の値(tags2とか)に変更されることをおすすめします。
<dd class="side">
<ul id="tags">
<MTTags>
<li class="module-list-item taglevel<$MTTagRank$>">
<a href="<$MTTagSearchLink$>"><$MTTagName$></a>
</li>
</MTTags>
</ul>
</dd>
</MTIf>
また、スタイルシートに対応する記述(下記)も、tags を tags2 等に修正願います。
/* サイドメニュー(タグクラウド用) */
ul#tags {
margin-top: 5px;
padding-left: 0;
list-style: none;
}
ul#tags .module-list-item {
display: inline;
}
ul#tags li.taglevel1 {
font-size: 125%;
font-weight: bold;
}
ul#tags li.taglevel2 {
font-size: 125%;
}
ul#tags li.taglevel3 {
font-size: 116.6%;
}
ul#tags li.taglevel4 {
font-size: 108.3%;
}
ul#tags li.taglevel5 {
font-size: 100%;
}
ul#tags li.taglevel6 {
font-size: 91.6%;
}
余談ですが、当ブログに IE で訪問されているユーザがどれくらいいらっしゃるのかと思って、Google Analytics を調べてみました。
まず、全ブラウザ別の構成比率です。青が IE、緑が Firefox、赤が Safari です。

続いて、IE のみの構成比率です。青が IE6.0、緑が IE7.0 です。

ブログ記事に同一カテゴリーのブログ記事の前後リンクを表示する
Movable Type で、ブログ記事の前後のブログ記事へのリンクを、直近のブログ記事ではなく、同一カテゴリーのブログ記事を表示するカスタマイズです。
下の画面の、ブログ記事タイトル上にある前後リンクは、分かりにくいですが、同一カテゴリーのブログ記事です。

また、ブログ記事に複数カテゴリーを設定している場合は、すべてのカテゴリーの前後リンクも表示します(こんなに表示するのもどうかと思いますが...)。

以下、カスタマイズ方法です。
1.プラグインのダウンロード
Previous and next in category のサイトに進み、「PreviousNextInCategory」のリンクをクリック。
![]()
2.プラグインのインストール
ダウンロードした PreviousNextInCategory.zip を解凍して、PreviousNextInCategory.pl をpluginsディレクトリにアップロードします。
ブログ管理画面より、「システムメニュー」→「プラグイン」で「PreviousNextInCategory.pl」が表示されればインストール完了です。

3.プライマリカテゴリーに属するブログ記事のみを表示する場合
ブログ記事アーカイブの任意の位置に下記のサブテンプレートを設定してください。
<MTEntryPreviousInCategory>
<a href="<$MTEntryPermalink$>">« <$MTEntryTitle$></a> |
</MTEntryPreviousInCategory>
<a href="<$MTEntryPermalink archive_type="Category"$>"><$MTEntryCategory$></a>
<MTEntryNextInCategory>
| <a href="<$MTEntryPermalink$>"><$MTEntryTitle$> »</a>
</MTEntryNextInCategory>
ブログ記事アーカイブを再構築すれば、冒頭のように、同一カテゴリーの前後記事リンクが表示されます。
4.ブログ記事に登録されているすべてのカテゴリーに属するブログ記事を表示する場合
PreviousNextInCategory.plを任意のエディタで開き、
:
sub _hdlr_entry_previous_in_category {
my($ctx, $args, $cond) = @_;
my $e = $ctx->stash('entry')
or return $ctx->_no_entry_error('MTEntryPrevious');
my $cat = $e->category
or return '';
my $prev = $e->previous(1);
:
sub _hdlr_entry_next_in_category {
my($ctx, $args, $cond) = @_;
my $e = $ctx->stash('entry')
or return $ctx->_no_entry_error('MTEntryNext');
my $cat = $e->category
or return '';
my $next = $e->next(1);
:
の部分に下記の青色の行を追加します。
:
sub _hdlr_entry_previous_in_category {
my($ctx, $args, $cond) = @_;
my $e = $ctx->stash('entry')
or return $ctx->_no_entry_error('MTEntryPrevious');
my $cat = $e->category
or return '';
if($ctx->stash('category') ne '') {
$cat = $ctx->stash('category');
}
my $prev = $e->previous(1);
:
sub _hdlr_entry_next_in_category {
my($ctx, $args, $cond) = @_;
my $e = $ctx->stash('entry')
or return $ctx->_no_entry_error('MTEntryNext');
my $cat = $e->category
or return '';
if($ctx->stash('category') ne '') {
$cat = $ctx->stash('category');
}
my $next = $e->next(1);
:
ブログ記事アーカイブの任意の位置に下記のサブテンプレートを設定してください。
<MTEntryCategories>
<p>
<MTEntryPreviousInCategory>
<a href="<$MTEntryPermalink$>">« <$MTEntryTitle$></a> |
</MTEntryPreviousInCategory>
<a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel$></a>
<MTEntryNextInCategory>
| <a href="<$MTEntryPermalink$>"><$MTEntryTitle$> »</a>
</MTEntryNextInCategory>
</p>
</MTEntryCategories>
ブログ記事アーカイブを再構築すれば、ブログ記事が属する全カテゴリーの前後記事リンクが表示されます。
5.前後記事の再構築をする
上記の設定だけでは、ブログ記事投稿時に同一カテゴリーの前後記事が再構築されないという問題があります。
ということで、一応、MT4対応のプラグインを作ってみました。
元プラグインをかなり改変してしまったので、上記のファイルをダウンロードしたら、元プラグインにある、
_hdlr_entry_previous_in_category
_hdlr_entry_next_in_category
を埋め込んでください(複数カテゴリーに対応させる場合は4項のカスタマイズも行ってください)。
具体的な作業は、ダウンロードしたファイルの最後の方に簡単な説明を入れてますので、それを読んでください。
複数のカテゴリーを設定したブログ記事でも、前後リンクのブログ記事はすべて再構築されます。
なお、再構築は同じカテゴリーのブログ記事を検索するという、元記事のロジックをそのまま使わせてもらってますが、パフォーマンスの問題を解消する改善策がありましたらご教示ください。
6.参考記事
このエントリーは下記の記事を参考にさせていただきました。ありがとうございました。
カテゴリーアーカイブのサブカテゴリーリストに、親カテゴリーとその子カテゴリーを表示する
Category:[カテゴリー]
Tag:[Category, Customize, MovableType, MTSetVarTemplate]
Permalink
Movable Type のカテゴリーアーカイブに表示しているサブカテゴリーリストにおいて、自カテゴリーと、その親カテゴリーに属するカテゴリーを表示するカスタマイズです。
具体例を説明します。例えば、ブログのカテゴリーが、
cat1
├ cat1-1
├ cat1-2
└ cat1-3
cat2
├ cat2-1
├ cat2-2
└ cat2-3
cat3
├ cat3-1
├ cat3-2
└ cat3-3
となっていると仮定します。
cat1-1 のカテゴリーアーカイブを表示した時、サブカテゴリーリストには、
cat1
├ cat1-1
├ cat1-2
└ cat1-3
のみを表示します。また、cat2-2 のカテゴリーアーカイブを表示した時、サブカテゴリーリストには、
cat2
├ cat2-1
├ cat2-2
└ cat2-3
のみを表示します。
1.サブカテゴリーのアーカイブで親カテゴリーとそのサブカテゴリーを表示する
次のサブテンプレートを任意の位置に設定して、再構築してください。
<MTParentCategory>
<MTSubCategories include_current="1">
<MTSubCatIsFirst><ul></MTSubCatIsFirst>
<MTIfNonZero tag="MTCategoryCount">
<li><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><MTCategoryLabel></a> [<$MTCategoryCount$>]
<MTElse>
<li><MTCategoryLabel>
</MTElse>
</MTIfNonZero>
<MTSubCatsRecurse>
</li>
<MTSubCatIsLast></ul></MTSubCatIsLast>
</MTSubCategories>
</MTParentCategory>
このサブテンプレートは、親カテゴリーでは何も表示されません。親カテゴリーは、一番外側の MTParentCategory タグの実行条件にマッチしない(親カテゴリーに親カテゴリーが存在しない)ためです。
2.親カテゴリーでも同じように表示する
親カテゴリーである cat1 のカテゴリーアーカイブを表示した時、サブカテゴリーリストに
cat1
├ cat1-1
├ cat1-2
└ cat1-3
とする場合は、先のサブテンプレートに下記の青色部分を追加します。
<MTParentCategory>
<MTSubCategories include_current="1">
<MTSubCatIsFirst><ul></MTSubCatIsFirst>
<MTIfNonZero tag="MTCategoryCount">
<li><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><MTCategoryLabel></a> [<$MTCategoryCount$>]
<MTElse>
<li><MTCategoryLabel>
</MTElse>
</MTIfNonZero>
<MTSubCatsRecurse>
</li>
<MTSubCatIsLast></ul></MTSubCatIsLast>
</MTSubCategories>
</MTParentCategory>
<MTHasNoParentCategory>
<MTSubCategories include_current="1">
<MTSubCatIsFirst><ul></MTSubCatIsFirst>
<MTIfNonZero tag="MTCategoryCount">
<li><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><MTCategoryLabel></a> [<$MTCategoryCount$>]
<MTElse>
<li><MTCategoryLabel>
</MTElse>
</MTIfNonZero>
<MTSubCatsRecurse>
</li>
<MTSubCatIsLast></ul></MTSubCatIsLast>
</MTSubCategories>
</MTHasNoParentCategory>
ちなみに上記のリストでは、MTSubCategories が2ヶ所出現し、その内容は全く同じです(赤色部分)。
<MTParentCategory>
<MTSubCategories include_current="1">
<MTSubCatIsFirst><ul></MTSubCatIsFirst>
<MTIfNonZero tag="MTCategoryCount">
<li><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><MTCategoryLabel></a> [<$MTCategoryCount$>]
<MTElse>
<li><MTCategoryLabel>
</MTElse>
</MTIfNonZero>
<MTSubCatsRecurse>
</li>
<MTSubCatIsLast></ul></MTSubCatIsLast>
</MTSubCategories>
</MTParentCategory>
<MTHasNoParentCategory>
<MTSubCategories include_current="1">
<MTSubCatIsFirst><ul></MTSubCatIsFirst>
<MTIfNonZero tag="MTCategoryCount">
<li><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><MTCategoryLabel></a> [<$MTCategoryCount$>]
<MTElse>
<li><MTCategoryLabel>
</MTElse>
</MTIfNonZero>
<MTSubCatsRecurse>
</li>
<MTSubCatIsLast></ul></MTSubCatIsLast>
</MTSubCategories>
</MTHasNoParentCategory>
次のように MTSetVarTemplate タグを使って丸めておけば、サブテンプレートの重複したマークアップを解消できます。
<mt:setvartemplate name="subcategorylist">
<MTSubCategories include_current="1">
<MTSubCatIsFirst><ul></MTSubCatIsFirst>
<MTIfNonZero tag="MTCategoryCount">
<li><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><MTCategoryLabel></a> [<$MTCategoryCount$>]
<MTElse>
<li><MTCategoryLabel>
</MTElse>
</MTIfNonZero>
<MTSubCatsRecurse>
</li>
<MTSubCatIsLast></ul></MTSubCatIsLast>
</MTSubCategories>
</mt:setvartemplate>
<MTParentCategory>
<mt:getvar name="subcategorylist">
</MTParentCategory>
<MTHasNoParentCategory>
<mt:getvar name="subcategorylist">
</MTHasNoParentCategory>
3.カテゴリーアーカイブ以外でこのサブテンプレートを表示させない対処
いずれの方法も、リストの一番外側は、
<MTIf name="category_archive">
:
</MTIf>
で括っておけば、他のアーカイブで表示されずに済みます。
Movable Type 4.1 書籍のまとめ
ここ最近、Movable Type 4.1 向けの書籍が出回り始めました。
ということで、拙著から本屋でざっと確認したものまで含め、以下にまとめてみました。参考になれば幸いです(まだ発売されていないものもあります)。
記述が曖昧な部分が気になるので、内容については改めて見直したいと思いますが、現時点で重大な誤りがありましたらご指摘ください。
1.まとめ
表は「初心者向け」や「ためになる」など、主観的かつ曖昧な感想はできるだけ避け、書かれている内容に着目しています(といってもやはり主観的ですが...)。
Movable Type プロフェッショナル・スタイル MT4.1対応![]() |
CMSとして使うMovable Typeガイドブック![]() |
Movable Typeで作る絶妙なブログサイト―4.1対応![]() |
Movable Typeテンプレートタグ虎の巻![]() |
|
|---|---|---|---|---|
| インストール | 詳しく解説 | なし | 簡単に解説 | なし |
| 各機能の説明 | MT4.1の特徴の説明あり | 簡単に解説 | 広く解説 | なし |
| テンプレートの解説 | 詳しく解説 | 詳しく解説 | 概要のみ | なし |
| テンプレートタグの解説 | 特定の章で詳しく解説 | 詳しく解説 | 概要のみ | 詳しく解説(全てのテンプレートタグを網羅) |
| テンプレートタグを使ったカスタマイズ | ややあり | 多い | 基本的なものが少し | 非常に多い |
| プラグイン | カスタマイズ・作成方法について詳しく解説 | 概要とテンプレートセットの説明のみ | カスタマイズについていくつか解説 | なし |
| テンプレートタグリファレンス | なし | あり(オプションについても概要を記述) | あり | あり(書籍全体がリファレンス) |
| グローバルモディファイアリファレンス | なし | あり | なし | あり |
| サンプルデザイン | なし | あり | なし | なし |
| CD-ROM | なし | あり(MTOS4.1とオリジナルテンプレートセット同梱) | なし | なし |
| 価格 | 2940円 | 2940円 | 2100円 | 2940円 |
| ページ数 | 336ページ | 304ページ | 255ページ | 336ページ |
以下、個人的な感想です。
「Movable Typeで作る絶妙なブログサイト―4.1対応」は、これ1冊でインストールから基本操作、色々なカスタマイズができるような内容で、MT初心者~中級者向けといった印象です。なお、この本だけサイズが小さいです(A5判)。
「Movable Type プロフェッショナル・スタイル MT4.1対応」はその道のプロフェッショナルな方々が執筆されており、どの章も濃い内容です。特にプラグインやインストール関係の内容が充実しています。
「Webプロフェッショナルのための黄金則 Movable Typeテンプレートタグ虎の巻」は、テンプレートタグリファレンスですが、かなり充実した内容で、制御系のテンプレートタグもしっかり吟味してサンプルで使われているようです。内容もぎっしり詰まっていて、文字数はこの中で一番多いかもしれません。
「CMSとして使うMovable Typeガイドブック」は、簡単な基本操作に加え、テンプレート、テンプレートタグ、オリジナルテンプレートセットの解説に注力しています。タグリファレンスではなく、実際のサイト構築にテンプレート・テンプレートタグを活用することを目指したものです。
ということで、どれも違った内容なので、目的・用途によって選ぶと良いでしょう。
2.発売予定の書籍
先に紹介した「Movable Type プロフェッショナル・スタイル MT4.1対応」に加え、下記の書籍が発売予定のようです(画像なし)。
![]() | Movable Type 4 新しいWebサイトの黄金則-MTで実現するCMSサイト構築のすべて- 仲座 恵美 宮永 邦彦 芝 陽一郎 ソフトバンククリエイティブ 2008-04-05 売り上げランキング : Amazonで詳しく見る by G-Tools |
3.その他
Six Apart のサイトでもまとめられたようです。
2008.03.20
書籍を購入して記述を一部見直しました。
カスタムフィールドのテキストエリアに入力した改行をページに反映させる
Movable Type のカスタムフィールドで「テキスト(複数行)」という種類のフィールドを利用する際、テキストエリアへの入力内容に改行や空行を含めても、出力される文字列の改行や空行はすべて除去された状態で出力されてしまいます。
本エントリーでは、この事象を解消する方法を紹介します。
1.問題点
例えば、次のようなカスタムフィールドを作成します。テンプレートタグはとりあえず「EntryData」としておきます。

作成したフィールドで、次のようなテキストを入力します。

このカスタムフィールドを出力する「ブログ記事の概要」のサブテンプレートは次のようにします。
:
<div class="asset-body">
<$MTEntryBody$>
<MTIfNonEmpty tag="EntryData">
<$MTEntryData$>
</MTIfNonEmpty>
</div>
:
このテンプレートで出力されるカスタムフィールドの内容には、ご覧の通り、改行が含まれません。

2.対処方法
改行を含めるには、グローバルモディファイアである、filter モディファイアをカスタムフィールドに適用します。
:
<div class="asset-body">
<$MTEntryBody$>
<MTIfNonEmpty tag="EntryData">
<$MTEntryData filters="__default__"$>
</MTIfNonEmpty>
</div>
:
値に設定されている __default__ は、テキストフィルタとして定義されている予約変数(厳密にはMT::Util::html_text_transformをハンドリングするためのキー名)です。
このように設定することで、カスタムフォールドの出力結果に改行(br 要素や p 要素)が反映されます。

もう少し厳密に言えば、ブログ記事やウェブページの本文・追記のフォーマットで「改行を変換」を選択したものと同じ結果で出力されます。
3.参考記事
コメントのフラグメントを動的に切り替える
Movable Type のブログ記事アーカイブにある、コメントのフラグメントを動的に切り替えるカスタマイズです。
「フラグメント」とは「文書の特定の場所へのリンク」のことです。フラグメントに対応する、コメントへのリンクのフラグメント識別子(URLの#以降の部分)は、今回の場合、次のようになっています。
http://user-domain/2008/03/post.html#comments
今回実現したい、フラグメントによるリンクは次の通りです。
- ブログ記事にコメントが投稿されている場合、メインページに表示されているコメントへのリンクをクリックすると、その先頭にジャンプする
- ブログ記事にコメントが投稿されていない場合、メインページに表示されているコメントへのリンクをクリックすると、コメント投稿フォームにジャンプする
デフォルトテンプレートのコメント関連のマークアップは次のようになっています。投稿コメントおよびコメントフォーム全体を div 要素で括り、フラグメントとなる id 属性(赤色)を付与しているので、投稿コメントの有無に依存せず、常にフラグメントが存在します。
<MTIfCommentsActive>
<div id="comments" class="comments">
<MTIf name="comment_preview_template">
<$MTInclude module="コメント入力フォーム"$>
</MTIf>
<MTComments>
<MTCommentsHeader>
<h2 class="comments-header">コメント(<$MTEntryCommentCount$>)</h2>
<div class="comments-content">
</MTCommentsHeader>
<$MTInclude module="コメント詳細"$>
<MTCommentsFooter>
</div>
</MTCommentsFooter>
</MTComments>
<MTUnless name="comment_preview_template">
<$MTInclude module="コメント入力フォーム"$>
</MTUnless>
</div>
</MTIfCommentsActive>
問題となるのは、コメント全体に対してフラグメントが設定できないマークアップになっている場合です。
例えば次のようなマークアップを想定します。
<MTIfCommentsActive>
<MTIf name="comment_preview_template">
<div>
<$MTInclude module="コメント入力フォーム"$>
</div>
</MTIf>
<MTComments>
<MTCommentsHeader>
<h2 id="comments" class="comments-header">コメント(<$MTEntryCommentCount$>)</h2>
<div class="comments-content">
</MTCommentsHeader>
<$MTInclude module="コメント詳細"$>
<MTCommentsFooter>
</div>
</MTCommentsFooter>
</MTComments>
<MTUnless name="comment_preview_template">
<div>
<$MTInclude module="コメント入力フォーム"$>
</div>
</MTUnless>
</MTIfCommentsActive>
このマークアップでは、もし投稿コメントがひとつもないと、MTComments 内部が実行されず、フラグメントも表示されないため、コメントのリンクをクリックするとページのトップにジャンプすることになります。
つまり、投稿コメントの有無によって、フラグメントの出力位置を切り替える必要があります。
この問題を解消するには、次のようにコメント入力フォーム部分に MTIfNonZero を追加し(青色部分)、投稿コメント件数が0の場合だけ id 属性を表示するようにします。
<MTIfCommentsActive>
<MTIf name="comment_preview_template">
<div>
<$MTInclude module="コメント入力フォーム"$>
</div>
</MTIf>
<MTComments>
<MTCommentsHeader>
<h2 id="comments" class="comments-header">コメント(<$MTEntryCommentCount$>)</h2>
<div class="comments-content">
</MTCommentsHeader>
<$MTInclude module="コメント詳細"$>
<MTCommentsFooter>
</div>
</MTCommentsFooter>
</MTComments>
<MTUnless name="comment_preview_template">
<div<MTIfNonZero tag="MTEntryCommentCount"><MTElse> id="comments"</MTIfNonZero>>
<$MTInclude module="コメント入力フォーム"$>
</div>
</MTUnless>
</MTIfCommentsActive>
なお、コメント入力フォームの MTInclude が2ヶ所ありますが、最初に現れる、MTIf タグで括られた方は、コメントプレビュー時しか表示されない(=フラグメントの対象にならないため)ので、対処する必要はありません。
参考記事:文書の特定の場所へのリンク
Movable Type のデモ環境を簡単に構築する InstaMT
MovableType.jp で InstaMT というのが公開されていたので、早速試してみました。「InstaMT」は instant をもじったものです(と勝手に解釈しています)。
InstaMT は、Movable Type が動作するのに必要な環境である Apache, MySQL, ActivePerl, そして MTOS 4.1 が各々ひとつのディレクトリにプリインストールされているかんたんデモ環境構築パックです。InstaMT.exe を実行すれば、Apache や MySQL のステータスを表示するウインドウが立ち上がり、ローカルホスト (http://127.0.0.1/) へアクセスするだけで Movable Type のダッシュボードに移動します。
以下、USB メモリからの起動方法を紹介します。
1.デモ環境構築パックのダウンロード
InstaMT でかんたんデモ環境構築のサイトから InstaMT-USB.zip をダウンロードします。
2.インストール
ダウンロードしたアーカイブを解凍します。
ファイルサイズがかなり大きいので、150MB くらいの空きがあるといいでしょう。また、USBメモリのトップディレクトリに次のファイルおよびフォルダが展開されていないと、次の起動が説明の通りに行えません。
- autorun.inf
- InstaMT
3.起動
USB メモリを PC に挿入すると、「Run InstaMT デバイスで提供されたプログラムを使用」が表示されるので、それを選択します。
autorun.inf が別のフォルダ配下にある場合は、このように起動できないので、InstaMT フォルダの中にある InstaMT.exe を起動してください。

InstanMT のウィンドウが開きます。

同時にブラウザが起動し、次のようなメッセージが表示されますので、しばらく待ちましょう。

Apache や MySQL が正常に起動できれば、Movable Type の管理画面が起動し、次のような画面に遷移します。

USB メモリを挿入した PC で、他の Apache や MySQL が起動していると(厳密にはポートが使用されていると)正常に起動できないので気をつけましょう。






