「のだめカンタービレ」ファン必読の書、「ボクたちクラシックつながり」
ピアニスト・文筆家の青柳いづみこさんが書かれた、音楽マンガ解説&検証&音楽裏事情本です。
![]() | ボクたちクラシックつながり―ピアニストが読む音楽マンガ (文春新書 622) 青柳 いづみこ 文藝春秋 2008-02 売り上げランキング : 1396 Amazonで詳しく見る by G-Tools |
書籍の内容は、「のだめカンタービレ」「ピアノの森」「神童」という、3大音楽コミックを対象に、プロの音楽家の視点からそのストーリーをクラシック音楽界の現実と比較し、鋭い切り口でおもしろおかしく語ってくれています。加えて、一見華やかに見えるクラシック音楽界の裏事情も満載です。
音楽にさほど精通されていない方でも楽しめると思います。巻末には用語解説もついてます。
トピックス的に、いくつか引用しておきます。意味がとりやすいように[]で一部補足しています。
「第一章:一回読譜したらとっととやるぞ!」より
『暗譜』と『初見』は(略)千秋のように(略)両方の能力が備わっているのはけっこう珍しい
[暗譜で]ルービンシュタインは(略)「コーヒーをこぼしたしみのあとも、くっきり目に浮かんできますよ」
「第二章:楽譜通り弾け!」より
モーツァルトは自作の協奏曲を二度と同じようには弾かない(略)のに、他人が自分の作品を弾くときは(略)正確に弾くことを望んだ
パリ音楽院で、のだめの読譜のレヴェルで合格することはありえない
「第三章:バレンポイム対ホロヴィッツ!?」より
千秋はとても手が大きい(略)十度音程が(略)アルペジオになるところもちゃんと普通に和音で弾いてます
のだめはホロヴィッツそっくり(略)ホロヴィッツは(略)楽譜には書かれていないものをつけくわえて弾くのが得意でした
「第四章:コンクール派と非コンクール派」より
練習中に右手薬指を痛めてしまった先生[安川加壽子さん]は、(略)あろうことか自分の鼻で足りない鍵盤を押さえます。
のだめのモデルの一人が(略)ポゴレビッチではないかと言われています。
「第五章:留学-クラシックをやるなら海外でなきゃ駄目?」より
のだめのパリ留学、疑問だらけです。
日本のピアノ界の教育システムで一番問題なのは(略)音楽大学だということです。
「第六章:指揮者の謎」より
[指揮者に]問われてくるのは、人間性ということになります。
[指揮者・チェリビタッケは]調弦からして普通の指揮者と違う(略)コントラバスの調弦だけで一時間かける。
「第七章:コンサートで受けるプログラム」より
のだめは(略)ベートーヴェンよりは「ゆるい」シューベルトを選んで正解でしょう。
演奏会を「ボレロ」ではじめるのは危険すぎる
「第八章:音楽は人間が出る?」より
のだめは、以外に競争心が強いのです
千秋は最高の教師
「第九章:ピアニストは本当に不良債権か?」より
自分の弾きたい曲目でのリサイタルは(略)自主公演だったりします(略)赤字が出た場合は自分でかぶるのです。
音楽家でいいなと思うのは、いつも脳内モルヒネが流れていて(略)進歩があったり(略)すばらしい演奏を聴いたりすると、それだけで幸せになって(略)生きていける
味気ない編集になってしまいましたが、実際はとても心地良い文調です。
テンプレートセットで独自のカラムレイアウトを適用させる方法(その3:ユーザーのカラムレイアウトを適用する&まとめ)
「その3」は、このシリーズの本題である、独自のカラムレイアウトを適用させる方法の説明です。
1.これまでのまとめ
「その1」と「その2」から、ユーザーのカラムレイアウトを適用するにあたって、ポイントとなる事項は次の通りです。
- テンプレートセットのテーマディレクトリ配下に配置した screen.css に記述しているカラムレイアウト名が適用される
- スタイルを利用してカラムレイアウトを変更すると、変数 page_layout に適用したレイアウト名が設定される(デフォルト以外の名称も利用可能)
- スタイルを利用してテーマあるいはカラムレイアウトを変更すると、スタイルシート(styles.css)の内容が、ベースファイル・テーマファイルへの import 命令に書き換えられる
また、テンプレートセットにカラムレイアウトを組み込むにあたっては、これまでの考察より、次のA・BとX・Yの組み合わせ(計4通り)が考えられます。
- A.デフォルトのカラムレイアウト名を利用する
- B.ユーザーのカラムレイアウト名を利用する
- X.テーマを利用する(テンプレートのスタイルシートにはimport命令のみ)
- Y.テーマを利用しない(テンプレートのスタイルシートにimport命令を書き込ませない)
「その2」では、A+X のケースについて述べましたので、順を追って、残りの組み合わせを行うにあたっての実現方法を説明します。
2.テーマを利用しない場合、スタイルシートに import 命令を書き込ませない方法
結論から申し上げると、スタイルシートに import 命令を書き込ませない仕組みを作るのは困難なため、次の方法を考えました。
- import 命令が書き込まれるスタイルシートをダミーとしてテンプレートセットに登録する
- 本来のスタイルシートは別のインデックステンプレートとして登録する
テンプレートの構成はイマイチですが、こうすればカラムレイアウトの変更でスタイルシートが import 命令で上書きされる事象を回避できます。
具体的には config.yaml に次のように設定します。
styles-site:
label: Stylesheet
outfile: styles-site.css
rebuild_me: 1
styles:
label: Stylesheet_Dummy
outfile: styles.css
rebuild_me: 0
上がCSSの実体があるテンプレート、下はダミー用のスタイルシートです。実験時にわかったことは、次の2つです。
- styles という種類のテンプレートを探して import 命令を書き込むため、実体の CSS は別のファイル名が良い。
- styles という種類のテンプレートが存在しない場合は他の css ファイルを検索して import 命令を書き込むため、必ずダミーを用意する
3.テーマを利用しない場合の screen.css の設定
screen.css はテーマを利用しない場合は不要なファイルですが、カラムレイアウトを読み込ませるためには必須です。
よって、テーマを利用しない場合の screen.css の中身はヘッダのみとし、CSS の実体は前項の通り、インデックステンプレートに記述します。
4.ユーザーのカラムレイアウト名を利用する場合の対処
もうひとつ隠れた問題があります。それは、ユーザーのカラムレイアウト名を利用する場合、テンプレートセットを入れ替えただけでは、変数 page_layout にユーザーのカラムレイアウト名が設定されません。
設定されるのは、スタイルでカラムレイアウトを切り替えた後です。
たとえば、当ブログの配布テンプレートのデフォルトのカラムレイアウトは
layout-three-columns
となっていますが、MTのデフォルトテンプレートのカラムレイアウトは
layout-wtt
となっているため、テンプレートセット入れ替え直後は、変数 page_layout に
layout-wtt
が設定されたままです。
これを回避するために、テンプレート(メインインデックスやブログ記事リストなどの、カラムレイアウトが必要なメインのテンプレート)の先頭(=ヘッダーが呼び出される前)に設定します。
カラムレイアウトがどのページでも同じであれば、「ヘッダー」テンプレートモジュールのbody要素より手前に設定しておけば一箇所の設定で済みます。
に、次のようなしかけを設定しておきます。
<mt:unless name="page_layout" like="column"><mt:setvar name="page_layout" value="layout-three-column"></mt:unless>
これは「変数 page_layout に column という文字列が含まれていなければ、layout-three-column を設定する」という意味です。つまり、Movable Type デフォルトテンプレートのカラムレイアウト名には column という文字列が含まれていないので、デフォルトテンプレートからテンプレートセットを入れ替えた場合には変数を上書きします。
変数を上書きした後、カラムレイアウト切り替えを行っても、この MTUnless タグの条件にマッチしない(=columnという文字列が含まれる)ので、選択したカラムレイアウトが適用される、というわけです。
ただし、色々なテンプレートをインストールしていると、この方法では限界があるかもしれませんので、よりユニークなカラムレイアウト名を自テンプレートセットに設定して、マッチする条件を厳しくした方が良いかもしれません。
つまり、
layout-three-columns
であれば、他のテンプレートセットのカラムレイアウト名とバッティングする可能性があるので、
koikikukan-layout-three-columns
と変更して、
<mt:unless name="page_layout" like="koikikukan"><mt:setvar name="page_layout" value="layout-three-column"></mt:unless>
という判定にした方が確実でしょう。
5.各ケースのテンプレートセット構成
最後に各組み合わせのテンプレートセット構成を掲載しておきます。間違ってたらすいません。
カラムレイアウト切り替えをテンプレートセットに導入する構成がやや複雑なため、まずは当サイトのテンプレートセット(スタイル適用版)を試してみて、ファイルの内容がどうなっているか確認してください(ローカライズも行っているので、ファイル構成がサンプルと若干異なっています)。
5.1 A+X:デフォルトのカラムレイアウト名を利用し、テーマを利用する
テンプレートセット名
├ mt-static/
│ └ plugins/
│ └ テンプレートセット名
│ └ themes/
│ ├ index.html
│ └ テーマ名/
│ ├ screen.css(実体あり、デフォルトのカラムレイアウトを指定)
│ ├ thumbnail.gif
│ └ thumbnail-large.gif
└ plugins/
└ テンプレートセット名/
├ config.yaml
└ templates
├ styles.mtml(import命令あり)
└ 他の各テンプレート
5.2 A+Y:デフォルトのカラムレイアウト名を利用し、テーマを利用しない
テンプレートセット名
├ mt-static/
│ └ plugins/
│ └ テンプレートセット名
│ └ themes/
│ ├ index.html
│ └ テーマ名/
│ ├ screen.css(ヘッダのみ、デフォルトのカラムレイアウトを指定)
│ ├ thumbnail.gif
│ └ thumbnail-large.gif
└ plugins/
└ テンプレートセット名/
├ config.yaml
└ templates
├ styles.mtml(ダミー)
├ styles-site.mtml(CSS の実体)
└ 他の各テンプレート
5.3 B+X:ユーザーのカラムレイアウト名を利用し、テーマを利用する
テンプレートセット名
├ mt-static/
│ └ plugins/
│ └ テンプレートセット名
│ └ themes/
│ ├ index.html
│ └ テーマ名/
│ ├ screen.css(実体あり、ユーザーのカラムレイアウトを指定)
│ ├ thumbnail.gif
│ └ thumbnail-large.gif
└ plugins/
└ テンプレートセット名/
├ config.yaml
└ templates
├ styles.mtml(import命令あり)
└ 他の各テンプレート
5.4 B+Y:ユーザーのカラムレイアウト名を利用し、テーマを利用しない
テンプレートセット名
├ mt-static/
│ └ plugins/
│ └ テンプレートセット名
│ └ themes/
│ ├ index.html
│ └ テーマ名/
│ ├ screen.css(ヘッダのみ、ユーザーのカラムレイアウトを指定)
│ ├ thumbnail.gif
│ └ thumbnail-large.gif
└ plugins/
└ テンプレートセット名/
├ config.yaml
└ templates
├ styles.mtml(ダミー)
├ styles-site.mtml(CSS の実体)
└ 他の各テンプレート
このシリーズは以上です。
テンプレートセットで独自のカラムレイアウトを適用させる方法(その2:デフォルトテンプレートのレイアウトを適用する仕組み)
今回は、デフォルトで用意されているレイアウトをテンプレートセットに適用させる方法を紹介します。この方法では、Movable Type の「既存のブログ」のベーステーマ、
mt-static/themes-base/blog.css
のスタイルに依存することになるので、その点を注意してください。
なお、テンプレートセットの設定には、config.yaml を用いた例で紹介します。
1.テンプレートセットの構成
インデックステンプレートのスタイルシートを、「styles」の種類で登録します(下)。
styles:
label: Stylesheet
outfile: styles.css
rebuild_me: 1
このスタイルシート、styles.mtml には次のような内容を記述してください。
/* Default Layout: <mt:setvar name="page_layout" value="layout-wtt"> */
@import url(<$MTStaticWebPath$>themes-base/blog.css);
@import url(<$MTStaticWebPath$>plugins/MyTemplateSet/themes/sample/screen.css);
1行目はデフォルトテンプレートに倣っているだけです。テンプレートセットを切り替えたときにこの設定が適用されると思ったのですが、そうでもないようです。
他のテンプレートの説明は、ここでは省略します。
また、テーマファイルの実体(screen.css)は、
mt-static/plugins/テンプレートセット名/themes/テーマ名
配下においてください。
また、screen.css のヘッダ部分に、適用したいレイアウト(青色部分)を記述します。適用させるカラムレイアウトが複数存在する場合は、カンマで区切ります。
/*
name: Koikikukan
designer: Yujiro Araki
designer_url: http://www.koikikukan.com/
layouts: layout-wtt, layout-twt
*/
デフォルトで用意されているレイアウト名は次のものがあります。これらはローカライズが適用され、スタイル選択画面では日本語で表示されるようになっています。
- layout-wt(2カラム:大小)
- layout-tw(2カラム:小大)
- layout-wm(2カラム:大中)
- layout-mw(2カラム:中大)
- layout-wtt(3カラム:大小小)
- layout-twt(3カラム:小大小)
2.テンプレートセットの入れ替えとスタイルの切り替え
作成したテンプレートセットを plugins ディレクトリおよび、mt-static/plugins ディレクトリにアップロードします。
アップロードしたテンプレートセットに入れ替えた後の、スタイル切り替え(テーマの切り替えまたはレイアウトの切り替え)方法は「その1」の3項を参照してください。
先ほどの screen.css のヘッダに設定した内容が、セレクトボックスに反映されます(画面下)。
ここではセレクトボックスの表示を確認しているだけであり、当サイトのテンプレートセットに実際に適用できることを意味しているのではありません。

なお、テーマまたはカラムレイアウトを切り替えると、スタイルシートは次のような内容に置き替わります。
/* This is the StyleCatcher theme addition. Do not remove this block. */
@import url(/blog/MT-4.1-ja/mt-static/themes-base/blog.css);
@import url(/blog/MT-4.1-ja/mt-static/support/themes/sample/sample.css);
/* end StyleCatcher imports */
テーマファイルは、mt-static/support/themes にコピーされるようです。
3.まとめ
この方法を独自デザインにカラムレイアウト切り替えに適用できればスッキリするのですが、ベーステーマが必ず import されてしまうため、独自のデザインをテンプレートセットに適用したい場合には有効ではありません。
また、スタイルシートがテンプレート上に配置されないため、スタイルシートを編集するケースには向いていません。つまりこの方法は、テンプレートセット配布元が多くのデザインを用意し、ユーザーは好きなデザインを選択し、かつそれらをカスタマイズしないケースに適していると思われます。
テンプレートセットで独自のカラムレイアウトを適用させる方法(その1:テーマ切り替えの仕組み)
Category:[4.1, テンプレートセット]
Tag:[MovableType, Repository, TemplateSet]
Permalink
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 のパスが自動的に書き換えられます。
ブログ記事に同一カテゴリーのブログ記事リストを表示(MT4版・改)
「ブログ記事に同一カテゴリーのブログ記事リストを表示(MT4版)」や、これまでの似たようなカスタマイズでは、次の問題あることが判明しました。
1.問題点
異なる親カテゴリーに同名のサブカテゴリーがある場合、対応できない。
具体的には、次のようなカテゴリー構成を想定します。
cat-A
├ cat-1
└ cat-2
cat-B
├ cat-1
└ cat-2
この構成で「ブログ記事に同一カテゴリーのブログ記事リストを表示(MT4版)」を行うと、cat-A/cat-1 に属するブログ記事と、cat-B/cat-1 に属するブログ記事は「同一カテゴリーのブログ記事リスト」とみなされてしまいます。
2.原因
「同一カテゴリーのブログ記事リスト」のキー情報として、MTEntryCategory という、ブログ記事に属するメインカテゴリー名のみ使っており、カテゴリーの親カテゴリーまで含めた情報やID番号でサーチしていないためです。
こうなった経緯は、そもそも、Movable Type 3 の途中まで「サブカテゴリー」という概念が存在しませんでした。つまり、親カテゴリーしか作れなかったため、同名のカテゴリーの存在が許されず、これまでのサブテンプレートを使えば「同一カテゴリーのブログ記事リスト」を実現できた、という訳です。
3.対処
3.1 EntryCategoryID プラグインを使う
「EntryCategoryID プラグイン」を使い、ブログ記事のメインカテゴリーのID番号と、ブログ記事リストのカテゴリーIDを比較し、同一カテゴリーID のブログ記事のみリスティングします。
<mt:setvarblock name="entrycategoryid"><$MTEntryCategoryID$></mt:setvarblock>
<dt class="sidetitle">
Entries of this Category
</dt>
<dd class="side">
<ul>
<MTCategories>
<mt:setvarblock name="currentcategoryid"><$MTCategoryID$></mt:setvarblock>
<mt:if name="currentcategoryid" eq="$entrycategoryid">
<MTEntries>
<li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li>
</MTEntries>
</mt:if>
</MTCategories>
</ul>
</dd>
3.2 MTParentCategories タグを使う(その1)
これは後から気がついたのですが、MTParentCategories タグを使い、ブログ記事のメインカテゴリーの親カテゴリーを取得すれば、3.1項と同じことができます。
<MTParentCategories glue="/" setvar="entrycategories"><$MTCategoryLabel$></MTParentCategories>
<dt class="sidetitle">
Entries of this Category
</dt>
<dd class="side">
<ul>
<MTCategories>
<MTParentCategories glue="/" setvar="currententrycategories"><$MTCategoryLabel$></MTParentCategories>
<mt:if name="currententrycategories" eq="$entrycategories">
<MTEntries>
<li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li>
</MTEntries>
</mt:if>
</MTCategories>
</ul>
</dd>
MTParentCategories のカテゴリーのセパレータには "/"、また MTSetvarBlock タグの代わりに setvar モディファイアを利用しています。
3.3 MTParentCategories タグを使う(その2)
こちらは、MTEntries タグに category モディファイアを与えて、とりあえず自カテゴリーで絞り込んでから親カテゴリーと比較します。
<mt:setvarblock name="entrycategory"><$MTEntryCategory$></mt:setvarblock>
<MTParentCategories glue="/" setvar="entrycategories"><$MTCategoryLabel$></MTParentCategories>
<dt class="sidetitle">
Entries of this Category
</dt>
<dd class="side">
<ul>
<MTEntries category="$entrycategory">
<MTParentCategories glue="/" setvar="currententrycategories"><$MTCategoryLabel$></MTParentCategories>
<mt:if name="currententrycategories" eq="$entrycategories">
<li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li>
</mt:if>
</MTEntries>
</ul>
</dd>
2008.02.25
3.3項を追加しました。
EntryCategoryID プラグイン
Category:[テンプレートタグ, プラグイン]
Tag:[EntryCategoryID, MovableType, Plugin]
Permalink
現在のブログ記事の主カテゴリーのID番号を出力する EntryCategoryID プラグインを作成しました。このプラグインは、MTEntries ブロック内か、ブログ記事アーカイブで使用できます。
1.ダウンロード
下記のリンクからプラグインアーカイブをダウンロードし、任意のフォルダに保存してください。
2.アップロード
プラグインアーカイブを解凍し、中にある EntryCategoryID.pl を plugins ディレクトリにアップロードしてください。
ブログ管理画面より「システム」→「プラグイン」でプラグイン一覧を表示し、次のように表示されればOKです。

3.サンプル
<MTEntries>
<$MTEntryCategoryID$>
</MTEntries>
しょぼいサンプルですいません。具体的な使い方は次回エントリーします。
北門に
Movable Type 4 でカテゴリー別にデザインを切り替える方法(その3)
Movable Type 4 でカテゴリー別にデザインを切り替える方法を、何回かに分けて紹介します。
1.MTIfCategory タグブロック内のサブテンプレートをモジュール化する
カテゴリーアーカイブのデザインを変更する2つめの方法で、MTIfCategory タグブロック内にサブテンプレートをベタ書きするのではなく、MTInclude タグを使います。
カテゴリー1~3
<MTIfCategory name="カテゴリー1">
<$MTInclude module="カテゴリー1"$>
</MTIfCategory>
<MTIfCategory name="カテゴリー2">
<$MTInclude module="カテゴリー2"$>
</MTIfCategory>
<MTIfCategory name="カテゴリー3">
<$MTInclude module="カテゴリー3"$>
</MTIfCategory>
こうすることにより、カテゴリーアーカイブ本体では「どのカテゴリーにどのテンプレートを割り当てるか」という制御に徹することができ、テンプレート全体の見通しがよくなります。
汎用的なデザインを与えたいカテゴリー4~6を新たに追加する場合は、次のようにします。
<MTIfCategory name="カテゴリー1">
<$MTInclude module="カテゴリー1"$>
<MTElse>
<MTIfCategory name="カテゴリー2">
<$MTInclude module="カテゴリー2"$>
<MTElse>
<MTIfCategory name="カテゴリー3">
<$MTInclude module="カテゴリー3"$>
<MTElse>
<$MTInclude module="カテゴリーその他"$>
</MTIfCategory>
</MTIfCategory>
</MTIfCategory>
最初の MTIfCategory タグでカテゴリー1であるかの判定をし、そうでなければ MTElse を実行して、次の MTIfCategory タグでカテゴリー2であるかの判定をします。その繰り返しで、最後のカテゴリー判定にマッチしなかったカテゴリーには一番最後の MTElse タグの内容、つまりデフォルトとなるデザインのテンプレートモジュールを呼び出します。
2.MTIfCategory タグを除去して、モジュール化をさらに簡素化する
さて、すでにお気づきの方もいらっしゃると思いますが、最初のリストは、カテゴリーを識別するキーさえ取得できれば、実は以下の1行で済みます。
<$MTInclude module="カテゴリーを識別するキー"$>
「カテゴリーを識別するためのキー」として、次のようにカテゴリー名を使ってみます。カテゴリー名は、MTInclude タグを実行する前に、MTSetVarBlock タグを使って変数に設定し、変数名をmoduleモディファイアに与えれば、ダイナミックにカテゴリー名を設定することができます。
<mt:setvarblock name="category_name"><$MTCategoryLabel$></mt:setvarblock>
<$MTInclude module="$category_name"$>
これで、このアーカイブが「カテゴリー1」の再構築を行うときには変数 category_name には「カテゴリー1」が、「カテゴリー2」の再構築を行うときには変数 category_name には「カテゴリー2」…という具合に設定され、それぞれ「カテゴリー1」「カテゴリー2」…という名前のテンプレートモジュールを呼び出します。
注意するのは、変数category_nameをmoduleモディファイア(というか、nameモディファイア以外)で使う場合は、変数名の前に大抵「$」をつけておく、ということです。
3.MTIf タグを使ってデフォルトデザインの条件分岐をつける
2つめのリストのように、デフォルトのデザインと振り分けたい場合は、さらに MTIf タグと MTCategoryDescription タグで制御します。この方法は SYSTEM STUDIO さんよりアイデア頂きました。ありがとうございました。
<mt:setvarblock name="category_description"><$MTCategoryDescription$></mt:setvarblock>
<mt:if name="category_description">
<$MTInclude module="$category_description"$>
<mt:else>
<$MTInclude module="デフォルト"$>
<mt:if>
このリストを使う前準備として、各カテゴリーの「カテゴリーの説明」欄に、呼び出したいモジュール名を設定しておきます。デフォルトデザインのモジュールを呼び出したいときには、「カテゴリーの説明」欄には何も設定しません。
そうすれば、MTIf タグの判定で「カテゴリーの説明」欄に記入されている場合に、「カテゴリーの説明」欄に設定された名前のテンプレートモジュールを呼び出します。「カテゴリーの説明」欄に記入していない場合は、「デフォルト」という名前のテンプレートモジュールを呼び出します。
なお、前回もお伝えしたとおり、「カテゴリーの説明」欄を使うよりも、カスタムフィールドを利用した方が妥当に思われます。
「Movable Type WEB デザインの新しいルール」用のテンプレートについて
「Movable Type WEB デザインの新しいルール」用のテンプレートセットの配布を開始しました。このテンプレートは、書籍の公式サポートサイト(初版は「サンプルサイト」となっています)のみで配布しています。*1
また、書籍に掲載されているテンプレートアーカイブファイル名(template_4_0_utf8_1_3)と、現在サイトで配布中のテンプレートアーカイブファイル名(template_4_0_utf8_1_8)の対応するよう、「Movable Type テンプレート」のダウンロードリンクのそばに、表記を追記致しました。

文中では、Movable Type 4.1 の関係でカスタマイズ手順を変更せざるを得ない箇所があることについても触れ、サポートサイトのブログに「Movable Type 4.1 で「3-11・カラムレイアウトを変更する」を行う場合の注意」を追加いたしました。
さらに、テンプレートのバージョンアップによる変更内容をサポートサイトの「小粋空間テンプレート」の最後に、履歴として明記し、影響のある手順を明らかにしました。
基本的にテンプレートのバージョンアップは、不具合の修正が前提で、書籍のカスタマイズに影響がないようにしていますが、前述の通り、MT4.1 で変数 page_layout の扱いが変更になった(デフォルト値が設定され、ユーザが与えた値についてはdefaultモディファイアが適用できなくなった)ことにより、手順が一ヶ所だけ影響しています。
なお、上記の件は、Amazon の「Movable Type WEB デザインの新しいルール」のカスタマレビューのマイノリティさんのレビューを反映させたものです。
書籍中には「ダウンロードアーカイブファイル名は予告無しに変更する可能性があるので要注意」と書いてあり、また、書籍とサイトが連動する部分はテンプレートのダウンロードだけです。この点についてはレビューアの方が大きな誤解をされているようです。
また、
ひとつテンプレートが違うだけで章1つ分くらいやることが違います。
とありますが、前述の通り、テンプレートのバージョンアップは、MT4.1の仕様変更による影響を除いて、手順に影響がないことを前提に改修しています。
これから書籍を購入くださる方がこのレビューで誤った認識をされることはないと思いますが、念のため本エントリーにて弁明させて頂きました。
*1:公式サポートサイト(初版では「サンプルサイト」となっています)のURLは、
- 目次(2版のみ)
- 019ページ(2章扉ページの右下)
- 019ページ(2章扉ページの右下)
- 161ページ(5章扉ページの右下)
- 211ページ(6章扉ページの右下)
に掲載しています。
Movable Type 4 でカテゴリー別にデザインを切り替える方法(その2)
Movable Type 4 でカテゴリー別にデザインを切り替える方法を、何回かに分けて紹介します。
1.ひとつのアーカイブテンプレートでカテゴリーを分割する
カテゴリーアーカイブのデザインを変更する2つめの方法は、アーカイブテンプレートの中で MTIfCategory タグを使います。MTIfCategory タグの name モディファイアには、カテゴリー名が重複しないように設定します。
カテゴリー1~3
<MTIfCategory name="カテゴリー1">
:
(カテゴリー1用のテンプレート)
:
</MTIfCategory>
<MTIfCategory name="カテゴリー2">
:
(カテゴリー2用のテンプレート)
:
</MTIfCategory>
<MTIfCategory name="カテゴリー3">
:
(カテゴリー3用のテンプレート)
:
</MTIfCategory>
この方法には、次のような特徴があります。
- カテゴリーの振り分け処理が可能
- 基本的にパスは一意に決まる
- 優先の制約がない
ひとつのアーカイブテンプレートにまとめる一番のメリットは、あるいくつかのカテゴリーには特殊なデザインを与え、そうでないものについては汎用的なデザインを適用できることです。
「その1」の方法では、アーカイブテンプレートをカテゴリーごとに与えているため、そのような制御ができなくなります。
例えば、冒頭のサブテンプレートに、汎用的なデザインを使いたいカテゴリー4~6を新たに追加する場合、最初に示したサブテンプレートでは、カテゴリー4~6を個別に指定する必要がありますが、次のように変更すれば、一括した指定が可能です。
<MTIfCategory name="カテゴリー1">
:
(カテゴリー1用のテンプレート)
:
<MTElse>
<MTIfCategory name="カテゴリー2">
:
(カテゴリー2用のテンプレート)
:
<MTElse>
<MTIfCategory name="カテゴリー3">
:
(カテゴリー3用のテンプレート)
:
<MTElse>
:
(カテゴリー4~6用のテンプレート)
:
</MTIfCategory>
</MTIfCategory>
</MTIfCategory>
最初の MTIfCategory タグでカテゴリー1であるかの判定をし、そうでなければ MTElse を実行して、次の MTIfCategory タグでカテゴリー2であるかの判定をします。その繰り返しで、最後のカテゴリー判定にマッチしなかったカテゴリーには一番最後の MTElse タグの内容、つまりデフォルトとなるデザインを適用します。
次の設定は誤りです。
<MTIfCategory name="カテゴリー1">
:
(カテゴリー1用のテンプレート)
:
</MTIfCategory>
<MTIfCategory name="カテゴリー2">
:
(カテゴリー2用のテンプレート)
:
</MTIfCategory>
<MTIfCategory name="カテゴリー3">
:
(カテゴリー3用のテンプレート)
:
<MTElse>
:
(カテゴリー4~6用のテンプレート)
:
</MTIfCategory>
理由は、「カテゴリー4~6用のテンプレート」と書かれた部分にはカテゴリー1とカテゴリー2が含まれるからです。
また、この方法では基本的に全てのカテゴリーに共通のパスを与えますが、テンプレートタグを用いることでカテゴリー別に異なるパスを与えることもできます(これについては別の機会に)。またカテゴリー用アーカイブがひとつであるため、「優先」の問題も回避できます。
2.スタイルシートについて
ここでは次の方法が考えられます。
まず、head 要素が、各カテゴリーのサブテンプレートに含まれているのであれば、head 要素内にカテゴリー用のスタイルシートを呼び出す link 要素をそのまま記述します。
すべてのカテゴリーが共通で head 要素をテンプレートモジュールとして呼び出している場合は、MTIfCategory タグブロック内に次のような MTSetVar タグを記述します。
<MTIfCategory name="cat1">
<mt:setvar name="style" value="[カテゴリー1用スタイルシートのファイル名]">
</MTIfCategory>
<MTIfCategory name="cat2">
<mt:setvar name="style" value="[カテゴリー2用スタイルシートのファイル名]">
</MTIfCategory>
<MTIfCategory name="cat3">
<mt:setvar name="style" value="[カテゴリー3用スタイルシートのファイル名]">
</MTIfCategory>
<$MTInclude module="ヘッダー"$>
<MTIfCategory name="カテゴリー1">
:
(カテゴリー1用のテンプレート)
:
汎用的なカテゴリー用のスタイルシートを作りたい場合は、次のようにします。
<MTIfCategory name="cat1">
<mt:setvar name="style" value="[カテゴリー1用スタイルシートのファイル名]">
<MTElse>
<MTIfCategory name="cat2">
<mt:setvar name="style" value="[カテゴリー2用スタイルシートのファイル名]">
<MTElse>
<MTIfCategory name="cat3">
<mt:setvar name="style" value="[カテゴリー3用スタイルシートのファイル名]">
<MTElse>
<mt:setvar name="style" value="[カテゴリー4~6用スタイルシートのファイル名]">
</MTIfCategory>
</MTIfCategory>
</MTIfCategory>
<$MTInclude module="ヘッダー"$>
<MTIfCategory name="カテゴリー1">
:
(カテゴリー1用のテンプレート)
:
そして、「ヘッダー」モジュールには次のように記述しておきます。
<mt:if name="category_archive">
<link rel="stylesheet" href="<$MTBlogURL$><$mt:getvar name="style"$>" type="text/css" title="<$MTCategoryLabel encode_html="1"$>" media="screen,tv" />
</mt:if>
または、MTCategoryDescription タグにスタイルシートのファイル名(下のサンプルでは拡張子なし)を設定しておき、「ヘッダー」モジュールだけで呼び出せる方法もあります。
<mt:if name="category_archive">
<link rel="stylesheet" href="<$MTBlogURL$><$MTCategoryDescription$>.css" type="text/css" title="<$MTCategoryLabel encode_html="1"$>" media="screen,tv" />
</mt:if>
異なるカテゴリーで同じデザインを適用したい場合は、MTCategoryDescription タグに該当する「カテゴリーの説明」欄に同じ名称を記述しておきます。
なお、「カテゴリーの説明」よりもカスタムフィールドを使う方が、用途が明確になってよりいいでしょう。
- Movable Type 4 でカテゴリー別にデザインを切り替える方法(その1)
- Movable Type 4 でカテゴリー別にデザインを切り替える方法(その2)
- Movable Type 4 でカテゴリー別にデザインを切り替える方法(その3)
Movable Type 4 でカテゴリー別にデザインを切り替える方法(その1)
Movable Type 4 でカテゴリー別にデザインを切り替える方法を、何回かに分けて紹介します。
1.カテゴリー別にアーカイブテンプレートを独立させる
カテゴリーアーカイブのデザインを変更するために、カテゴリー別に複数のアーカイブテンプレートを作る方法があります。その際、カテゴリーアーカイブテンプレート全体を MTIfCategory タグで括ります。MTIfCategory タグの name モディファイアには、カテゴリー名が重複しないように設定します。
カテゴリー1
<MTIfCategory name="カテゴリー1">
:
(カテゴリー1用のテンプレート)
:
</MTIfCategory>
カテゴリー2
<MTIfCategory name="カテゴリー2">
:
(カテゴリー2用のテンプレート)
:
</MTIfCategory>
カテゴリー3
<MTIfCategory name="カテゴリー3">
:
(カテゴリー3用のテンプレート)
:
</MTIfCategory>
この方法には、次のような特徴があります。
- カテゴリーアーカイブテンプレートの独立性
- カテゴリー別にパスを変更できる
- カテゴリー別に異なるパスを設定すると「優先」の制約が発生する
まず、カテゴリーアーカイブテンプレートを独立させ、テンプレートとカテゴリーを1:1の対応にするので、下のように編集対象のカテゴリーが視覚的に分かりやすくなるというメリットがあります。また、テンプレートの内容にもよりますが、この方法であれば、Movable Type 4 の制御系タグをほとんど使わずにすむかもしれません。

また、カテゴリー別に異なるパスを与えたい場合、この方法以外に選択の余地はありません。テンプレートタグをパス欄に設定すれば個別に設定することも可能です。
最後の「カテゴリー別に異なるパスを設定すると「優先」の制約が発生する」の意味は、まず、同一アーカイブ種別のテンプレートを複数作成すると、「優先」の問題が発生します。「優先」とは、他のページからあるアーカイブ種別のアーカイブにリンクする場合のリンク先を決めるためのもので、優先にするテンプレートにはチェックをつけます。

例えば、カテゴリー1・カテゴリー2・カテゴリー3用のアーカイブテンプレートを、それぞれ別のアーカイブテンプレートで作成した場合、どれかひとつのアーカイブテンプレートが「優先」に、残りが「非優先」になります。
もし、カテゴリー別にパスを変更した場合、メインページなどでカテゴリーリストを、MTTopLevelCategories タグで表示すると、「優先」が設定されたカテゴリーのパスで表示されるので、非優先のカテゴリーアーカイブページはデッドリンクになります。
ただし、全てのカテゴリーアーカイブが同じパスであれば、非優先カテゴリーアーカイブへのリンクも、優先カテゴリーアーカイブで生成されたリンクが利用できます(たまたまそうなるだけであり、手法としては適切ではないかもしれません)。
2.スタイルシートについて
ここでは2つの方法が考えられます。
まず、head 要素が、独立させたカテゴリーアーカイブにそれぞれ含まれているのであれば、head 要素内にカテゴリー用のスタイルシートを呼び出す link 要素をそのまま記述します。これが一番シンプルな方法です。
もうひとつは、head 要素をテンプレートモジュールとして呼び出している場合は、MTIfCategory タグブロック内に次のような MTSetVar タグを記述します。
<MTIfCategory name="cat1">
<mt:setvar name="style" value="[カテゴリー用スタイルシートのファイル名]">
<$MTInclude module="ヘッダー"$>
:
</MTIfCategory>
そして、「ヘッダー」モジュールには次のように記述します。
<mt:if name="category_archive">
<link rel="stylesheet" href="<$MTBlogURL$><$mt:getvar name="style"$>" type="text/css" title="<$MTCategoryLabel encode_html="1"$>" media="screen,tv" />
</mt:if>
または、MTCategoryDescription タグにスタイルシートのファイル名(下のサンプルでは拡張子なし)を設定しておき、「ヘッダー」モジュールだけで呼び出せる方法もあります。
<mt:if name="category_archive">
<link rel="stylesheet" href="<$MTBlogURL$><$MTCategoryDescription$>.css" type="text/css" title="<$MTCategoryLabel encode_html="1"$>" media="screen,tv" />
</mt:if>
異なるカテゴリーで同じデザインを適用したい場合は、MTCategoryDescription タグに同じ名称を記述しておきます。
後者の方法は、他のカテゴリー分割方法でも共通に使えます。
2008.02.20
カテゴリーパスの記述を一部修正しました。
- Movable Type 4 でカテゴリー別にデザインを切り替える方法(その1)
- Movable Type 4 でカテゴリー別にデザインを切り替える方法(その2)
- Movable Type 4 でカテゴリー別にデザインを切り替える方法(その3)
冷暖房効率を改善するサーキュレーター
私の部屋(ワンルーム)は、エアコンだけで暖房しているのですが、エアコンの性能が良くないのか、一番高い温度に設定しても、部屋の温度が18度(エアコンのリモコンに表示)以上になることはありません。正直、かなり寒いです。
部屋の構造が、玄関との仕切りになる扉がないので、それが原因かと思い、部屋から玄関が吹き抜けにならないようにツッパリポールを使って、カーテンで遮断してみたのですが、効果なし(下)。

そんなとき、友人から「室内の空気を循環させるといい」ということを教えてもらい、家電量販店をうろうろしていてたまたまみつけた「サーキュレーター」というものを購入しました。
購入したのは「TWINBIRD フロア型サーキュレーター KJ-4071」で、3段階切替のみという、シンプルなものです。
![]() | TWINBIRD フロア型サーキュレーター KJ-4071GY ツインバード 売り上げランキング : 5156 おすすめ平均 ![]() Amazonで詳しく見る by G-Tools |
早速部屋において、写真のように天井に向けてスイッチON。

しばらく経つと部屋全体が暖かくなってきました。リモコンに表示されている温度をみてみると、なんと24度まで上がっていました。今までのように「足元が寒くて耐えられない」という状況から脱することができました。
ということで、値段も手頃で効果抜群です。セラミックファンヒーターなどで物足りない方にもおすすめです。夏は冷房効率の向上にも使えるようです。
唯一の欠点は「やや音がうるさい」ことですが、いいものは静音できるようです。他に、首振りつきやマイナスイオン発生など、色々出揃っているので、以下に紹介しておきます。
![]() | Vornado サーキュレーター(空気循環器) ブラック 【6 - 12畳用】 183B Vornado(ボルネード) 売り上げランキング : 4255 おすすめ平均 ![]() Amazonで詳しく見る by G-Tools |
![]() | Vornado サーキュレーター(空気循環器) ホワイトグレー 【12 - 30畳用】 610 Vornado(ボルネード) 売り上げランキング : 3796 おすすめ平均 ![]() Amazonで詳しく見る by G-Tools |
![]() | Honeywell ツインターボサーキュレーターHG (20cm×2・メタリック&ブラック) HT-8800BP Honeywell 2006-03-20 売り上げランキング : 4706 おすすめ平均 ![]() Amazonで詳しく見る by G-Tools |
![]() | Honeywellターボサーキュレーター(首振り) HFT-114 -BK Honeywell 売り上げランキング : 787 おすすめ平均 ![]() Amazonで詳しく見る by G-Tools |
![]() | Honeywell ターボサーキュレーターHG (30cmファン・メタリック&ブラック) HT-380BP Honeywell 2006-03-20 売り上げランキング : 613 おすすめ平均 ![]() Amazonで詳しく見る by G-Tools |
![]() | サーキュレーターDKS-18 エアコンや暖房の風邪を部屋中に循環 シーリングファンのように循環させます 扇風機 売り上げランキング : 3981 おすすめ平均 ![]() Amazonで詳しく見る by G-Tools |
![]() | TWINBIRD ハイパワーサーキュレーター トルネードビーム KJ-D073SBK ツインバード 2004-09-25 売り上げランキング : 4938 おすすめ平均 ![]() Amazonで詳しく見る by G-Tools |
![]() | Honeywellスーパーターボサーキュレーター HFT-311-BK Honeywell 売り上げランキング : 5575 おすすめ平均 ![]() Amazonで詳しく見る by G-Tools |
![]() | TWINBIRD フロア型サーキュレーター KJ-4071GY ツインバード 売り上げランキング : 5152 おすすめ平均 ![]() Amazonで詳しく見る by G-Tools |
![]() | TWINBIRD マイナスイオン発生 サーキュレーター KJ-D356MW ツインバード 売り上げランキング : 5309 おすすめ平均 ![]() Amazonで詳しく見る by G-Tools |
![]() | Honeywell トリプルターボサーキュレーターHG (20cm×3・メタリック&ブラック) HY-033BP Honeywell 2006-03-20 売り上げランキング : 8004 おすすめ平均 ![]() Amazonで詳しく見る by G-Tools |
![]() | Honeywell メガファン(サーキュレーション) HF-810 Honeywell 売り上げランキング : 10053 おすすめ平均 ![]() Amazonで詳しく見る by G-Tools |
![]() | Vornado サーキュレーター(空気循環器) グレー 【6 - 12畳用】 180C Vornado(ボルネード) 売り上げランキング : 4136 おすすめ平均 ![]() Amazonで詳しく見る by G-Tools |
![]() | V |



















