jQuery ベースのドロップダウンメニュー「Superfish」
Superfish は jQuery ベースでドロップダウンメニューを実現するためのライブラリです。

サンプルを用意しましたので動作をご確認してください。
ここでは、Superfish + Movable Type(配布テンプレート)によるグローバルナビゲーションを設定方法を紹介します。
なお、配布サイトのサンプルを試しましたが、書かれている通りに実行しないものがいくつかありました。ここではサンプルの「with Supersubs」を選びました。理由は、サンプルの設定通りに動いてくれたことと、メニューの幅を変更でき、使いやすそうだったためです。
また、Superfish では、本エントリーで紹介するサンプル以外にも、以下のようなことができます。
IEでプルダウンに重なっても表示

縦型メニュー

2段目のサブメニューを水平表示

1.Superfish のダウンロード
Superfish のサイトにアクセス。
タブの「Download & Support」をクリックし、「Superfish-1.4.8.zip(2009年9月時点のバージョン)」のリンクをクリックしてアーカイブをダウンロード。

2.Superfish のアップロード
アーカイブを展開し、superfish-1.4.8 のフォルダ名を superfish にリネームして、フォルダごとブログディレクトリにアップロード。
3.head 要素の修正
head 要素のあるテンプレートに下記を追加します。MT4の既定のブログであれば、「HTMLヘッダー」テンプレートモジュール、当サイト配布のテンプレートであれば「ヘッダー」テンプレートモジュールが該当します。
<link rel="stylesheet" type="text/css" media="screen" href="<mt:BlogURL />superfish/css/superfish.css" />
<script type="text/javascript" src="<mt:BlogURL />superfish/js/jquery-1.2.6.min.js"></script>
<script type="text/javascript" src="<mt:BlogURL />superfish/js/hoverIntent.js"></script>
<script type="text/javascript" src="<mt:BlogURL />superfish/js/superfish.js"></script>
<script type="text/javascript" src="<mt:BlogURL />superfish/js/supersubs.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("ul.sf-menu").supersubs({
minWidth: 12, // minimum width of sub-menus in em units
maxWidth: 27, // maximum width of sub-menus in em units
extraWidth: 1 // extra width can ensure lines don't sometimes turn over
// due to slight rounding differences and font-family
}).superfish(); // call supersubs first, then superfish, so that subs are
// not display:none when measuring. Call before initialising
// containing tabs for same reason.
});
</script>
script 要素内の「ul.sf-menu」が、3項の一番外側の ul 要素の class 属性値になります。また、
- minWidth:サブメニューの最小幅のem値
- maxWidth:サブメニューの最大幅のem値
- extraWidth:折りかえらないための設定(詳細は未確認)
となっています。
3.ドロップダウンメニューの追加
サブカテゴリリストを利用したドロップダウンメニュー(青色)を、ブログヘッダーの下に設定します。以下はサンプルで設定したものと同じものです。当サイト配布のテンプレートであれば「ヘッダー」テンプレートモジュールに設定します。
<div id="header">
<h1 id="blog-name"><a href="<mt:blogURL />" accesskey="1"><mt:blogName encode_html="1" /></a></h1>
<mt:if tag="BlogDescription"><p class="blog-description"><mt:blogDescription encode_html="1" /></p></mt:if>
</div>
<mt:ifArchiveTypeEnabled archive_type="Category">
<mt:topLevelCategories>
<mt:subCatIsFirst>
<ul<mt:hasNoParentCategory> id="navi" class="sf-menu" style="width:800px"</mt:hasNoParentCategory>>
</mt:subCatIsFirst>
<mt:if tag="CategoryCount">
<li><a href="<mt:categoryArchiveLink />" title="<mt:categoryDescription />"><mt:categoryLabel /></a>
<mt:else>
<li><a href="#"><mt:categoryLabel /></a>
</mt:if>
<mt:subCatsRecurse />
</li>
<mt:subCatIsLast>
</ul>
</mt:subCatIsLast>
</mt:topLevelCategories>
</mt:ifArchiveTypeEnabled>
グローバルナビゲーションを手動で設定する場合は、一番外側の ul 要素に以下の class 要素を付与してください。配下の要素には何も設定する必要はありません。
<ul class="sf-menu">
Movable Type 5.0 情報(MT4のサイトURLとアーカイブURLに異なるドメインを設定している場合のアップグレード)
Movable Type 4.xで、アーカイブURL(アーカイブパス)にサイトURL(サイトパス)と異なるドメインを設定している状態で Movalbe Type 5 にアップグレードした場合の動作を確認しましたので紹介します。
なお、この情報は Movable Type 5.0ベータ2 の動作を元にしています。
1.前提
Movable Type 4 では、作成したブログにアーカイブパス・アーカイブURLを適用する場合、ウェブサイトと異なるパスとURLが設定可能です(下)。

少し見づらいので編集状態にしたものが下記です。

ただし、Movable Type 5 では、新しく作成したブログにアーカイブパス・アーカイブURLを適用する場合、ウェブサイトと同じパスとURLが継承されます。言い換えると、ブログのサイトパス・サイトURLと、アーカイブパス・アーカイブURLは、Movable Type 4 のように全く異なるものを設定できなくなります(下)。
ウェブサイトの設定画面

ウェブサイト配下のブログ設定画面

ということで、Movable Type 4.xで、アーカイブURL(アーカイブパス)にサイトURL(サイトパス)と異なるドメインを設定している状態で Movalbe Type 5 にアップグレードすると、アーカイブURLとアーカイブパスがどう変わるかを確認しました。
なお、MT5 のウェブサイトのウェブページはアーカイブテンプレートを使って生成しますが、ウェブサイト自体に「アーカイブ」という概念がないため、ウェブサイトの管理画面にアーカイブURL・アーカイブパスの設定項目はありません。
2.MT4からMT5へのアップグレード結果
MT4 から MT5 にアップグレードした場合、ブログのアーカイブURL・アーカイブパスは Movable Type 4 の設定値がそのまま引き継がれます。

Movable Type 5 で新規にブログを作成したときと異なり、サイトURL・サイトパス全体の編集も可能です。

3.ジェネリックウェブサイトのサイトURL・サイトパスについて
アップグレード時に生成される、ジェネリックウェブサイト(空のウェブサイト)のサイトURL・サイトパスは空白になっています。

ちなみにこのジェネリックウェブサイトの管理画面には、次のようなメッセージが表示されます。

このジェネリックウェブサイトのサイトURL・サイトパスを誤って設定してしまうと(下)、

空白の状態で保存できないため(下)、元の空の状態に戻せなくなります。


4.ジェネリックウェブサイトのサイトURL・サイトパスを消去する方法
誤って設定してしまった場合、ブログのサイトURL・サイトパスが、次のようにウェブサイトパスやウェブサイトURLが前半に連結した値になってしまいます(下:ブログの設定画面)。

こうなってしまうと、ブログのサイトURL・サイトパスの元の設定を削除するしかありません(下:ブログの設定画面)。
ただ、ウェブサイトに設定したパスやURLがブログのパスやURLと異なり、しかもブログの値に直したい場合もあると思います。そのような場合、データベースを直接書き換える方法があります。
phpMyAdmin を利用できるのであれば、左のメニューから mt_blog をクリックして、次の画面の上部のタブの「表示」をクリックし、表示されたテーブル(下)からジェネリックウェブサイトのblog_id(下の画面では2)をチェックして、編集をクリックします。

次の画面で「blog_site_path」と「blog_site_url」の右側にある設定された内容を消去して、「実行する」をクリックすれば完了です。
「朝5分」で健康になりなさい! & プレゼントのお知らせ
イシハラクリニック院長・石原結實氏の健康法に関する書籍です。アスコム様より献本いただきました。ありがとうございました。
![]() | 「朝5分」で健康になりなさい! アスコム 2009-09-01 売り上げランキング : 162479 Amazonで詳しく見る by G-Tools |
本書は、タイトルの「朝5分」とあるように、
- 起床前30秒
- 起きてから60秒
- 次の120秒
- 最後の90秒
と、5分を4つのステージに分けて、それぞれのステージで行なう効果的な健康法を紹介しています。
その中でも、
- 簡単なアイソメトリック運動
- すり下ろしたショウガを入れた「生姜紅茶」
を生活習慣に取り入れることで「体の冷え」や「過食」を取り除き、体の中から健康にしていくことなどが記されています。興味のある方はご一読ください。
書籍プレゼントのお知らせ
プレゼント企画終了致しました。たくさんのご応募ありがとうございました!
アスコム社様より「本書を当ブログ読者の先着3名様にプレゼント致します」という連絡をいただいてますので、本書を希望される方は、このブログの「お問い合わせ」のページから、
「「朝5分」で健康になりなさい!」を希望します
という風な内容を記入してお送りください。メールをいただいた方から先着3名様に、アスコム社の担当者様より折り返しメールにて連絡してもらうように手配致します。なお、当選者の発表は当ブログでは行ないませんので予めご容赦ください。
MTArchiveList タグブロック内で使えるテンプレートタグ
Category:[アーカイブ, テンプレートタグ]
Tag:[MovableType, MTArchiveList, TemplateTag]
Permalink
MTArchiveList タグブロック内で使えるテンプレートタグということで、小ネタを紹介します。
MTArchiveList タグでは、通常、MTArchive系のテンプレートタグが使えますが、type モディファイアでブログ記事やカテゴリを指定した場合、その中に直接 MTEntry系や MTCategory系のファンクションタグが記述できます。
<mt:ArchiveList type="Individual">
<mt:EntryTitle />
</mt:ArchiveList>
<mt:ArchiveList type="Category">
<mt:CategoryLabel />
</mt:ArchiveList>
このサブテンプレートは(テンプレートタグの表記を MT3 のお作法に直しても)MT3.x では正常に動作しなかったので、MT4.x から動作が変わったようです。
以下は既出ですが、次のように書けば MTEntries タグブロック内は処理中のカテゴリに依存します。
<mt:ArchiveList type="Category">
<mt:CategoryLabel />
<mt:Entries>
<mt:EntryTitle />
</mt:Entries>
</mt:ArchiveList>
まとめると、「MTArchiveList タグブロック内はアーカイブテンプレートと同じコンテキストである」ということだと思います(多分)。
DirectiveViewer プラグイン v0.02
Category:[管理画面, 自作プラグイン]
Tag:[DirectiveViewer, MovableType, Plugin]
Permalink
先日公開した、Movable Type の環境変数を参照する「DirectiveViewer プラグイン」をバージョンアップしました。
1.変更内容
- Movable Type 4.x に対応(MT5にバージョンアップしてもプラグインを入れ替える必要はありません)
2.MovableType 4.x での利用方法
Movable Type 4.x のシステム管理画面の「ツール」→「環境変数」をクリックします。

このように環境変数が表示されます。

なお、動作確認バージョンは 4.1 および 4.261 です。4.0x での動作は未確認です。
2.ダウンロード
最新版のプラグインは下記のページよりダウンロードしてください。
音楽コンクールで勝つ3つの方法
昨日、某クラシックギターコンクールのお手伝いに行ってきました。
ということで、音楽コンクールで勝つための3つの方法を、以前から感じていたことや、審査員の先生から聞いた話としてまとめておきます。クラシックギター界でしか通用しない話かもしれませんが、考え方は色々なところに応用が効くような気もします。
1.印象に残る演奏
音楽に携わっている方には釈迦に説法かもしれませんが、技術的に完璧に弾けても、音楽的な表現が伴っていなければ、審査員の心を動かすことはできません。
2.選曲
これも当たり前の話ですが、その業界の誰もが知っている有名な曲をコンクールの自由曲で弾く場合、よほどの実力がない限り、避けた方がいいでしょう。審査員はその曲を聞き飽きるほど聴いていて、ちょっとやそっとの演奏ではいい点をもらえません。
まだあまり弾かれていない新しい曲を選び、それなりにこなれた演奏ができれば、審査員の印象は良くなると思います。
3.演奏時間
これは私が参加した某コンクールに閉じた話かもしれませんが、コンクールは1日で数十人を審査する長丁場で、審査員の方も時間が経つにつれて体力を消耗します。
自由曲には制限時間がありますが、「制限時間ギリギリまで演奏する選曲を行なうより、少し短くても、良い演奏をしてくれた方が印象がいい」という話を聞きました。
上記を「仕事のプレゼンテーションに」置き換えると、印象に残り、・目新しい手法で、ダラダラ行なわず手際よく、といったところが当てはまるのではないでしょうか。
Movable Type のウェブサイトに関するテンプレートタグ
Movable Type 5.0 で新しく「ウェブサイト」という概念が導入されました。そのことでウェブサイトに関連するテンプレートタグがいくつか追加されました。
ここではウェブサイト関連のテンプレートタグをいくつか紹介しておきます。基本的にはブログ系テンプレートタグ(MTBlogXX)と大きく変わらないので、ファンクションタグの説明は省略します。
MTWebsites
ウェブサイトの一覧を取得するブロックタグです。このテンプレートタグを使えば、ウェブサイトから他のウェブサイト、あるいはブログが属さない他のウェブサイトの情報にアクセスすることも可能です。
<mt:Websites>
<mt:WebsiteURL />
</mt:Websites>
site_ids モディファイアを指定することで、特定のウェブサイトを指定することもできます。
<mt:Websites site_ids="1,12,19">
MTBlogParentWebsite
ブログが属するウェブサイトのコンテキストに移動するブロックタグです。このタグを利用すれば、MTWebsites タグを使わずに、自分の所属するウェブサイトの情報を取得することができます。ベータ2で追加されました。
<mt:BlogParentWebsite>
<mt:WebsiteURL />
</mt:BlogParentWebsite>
MTWebsiteHasBlog
ウェブサイトがブログを有することを判定するブロックタグです。ウェブサイトコンテキストで使用します。なお、下の例ではウェブサイトに属するブログを指定していません(MTBlogs タグにそういった指定が可能なモディファイアはないようです)。
<mt:WebsiteHasBlog>
<mt:Blogs>
<mt:BlogURL />
</mt:Blogs>
</mt:WebsiteHasBlog>
MTIfWebsite
現在のコンテキストがウェブサイトコンテキストであることを判定するブロックタグです。MTElse を併用すればブログコンテキストも判定できるようです。
<mt:IfWebsite>
<h1>Search results for <$mt:WebsiteLabel$>:</h1>
<mt:Else>
<h1>Search results from all blogs:</h1>
</mt:IfWebsite>
注意事項
ウェブサイト関連のテンプレートタグの利用で気がついた点を記しておきます(ベータ2時点の情報)。
- ウェブサイトIDは、ブログIDの派生であるため、値は「ウェブサイト+ブログ」で一意
- ウェブサイトで、ブログのコンテキストに移動せずにブログ関連のテンプレートタグを使用すると、自ウェブサイトの情報を表示
- ブログでウェブサイト関連のテンプレートタグを使用する場合、ウェブサイトのコンテキストになっている必要あり(違反した場合は再構築エラー)
- ブログからウェブサイトのテンプレートをインクルードする際、インクルード先でウェブサイトのテンプレートタグが使われている場合は、ウェブサイトのコンテキストにする必要あり(下)
<mt:BlogParentWebsite>
<mt:include module="foo" blog_id="1" />
</mt:BlogParentWebsite>
ウェブページで画像の出力を制御する
Movable Type のウェブページで、特定のウェブページにだけ画像を表示したい場合のカスタマイズです。
例えば、ウェブページテンプレートに、ウェブページごとに異なる画像を出力するために次のようなマークアップを記述していると仮定します。
<img src="<mt:BlogURL />images/page<$mt:PageID$>.png" />
このマークアップでは、画像が不要なページも一律 img 要素を出力してしまうため、画像を出力したいウェブページに「@image」というプライベートタグを記述し、次のように青色部分を追加することで、画像の不要なページに img 要素を出力しないようにすることができます。
<mt:PageIfTagged tag="@image">
<img src="<mt:BlogURL />images/page<$mt:PageID$>.png" />
</mt:PageIfTagged>
逆に、「画像を出力しない」というプライベートタグをつけて、それ以外のウェブページで img 要素を出力したい場合は、次のようにします。
<mt:PageIfTagged tag="@noimage">
<mt:else>
<img src="<mt:BlogURL />images/page<$mt:PageID$>.png" />
</mt:PageIfTagged>
MTPageIfTagged タグはこのように、tag モディファイアにプライベートタグを指定することもできます。
そもそも、ウェブページへ画像を出力するにはカスタムフィールドを使う方法もありますが、ここでは img 要素を直接テンプレートに記述する方法で紹介しました。
ポッドキャスティング「こんぶだしmeeting」に出演
デザインユニット「linker」のポッドキャスティングコーナー「こんぶだしmeeting」に出演させて頂きました。ポッドキャスティングに登場するのは初めてです。
収録の裏話を少ししておくと、7月に新宿のベルギービール専門店「Frigo(フリゴ)」で収録を行なったのですが、最初の乾杯からしばし歓談タイムとなり(笑)、収録を開始したのはいい感じで酔い始めた頃でした。みんなでボイスレコーダーに顔を近づけて、周囲の騒がしさに負けない声量でしゃべってます。
多少酔ってたせいではありませんが、このサイトで週一ペースで投稿しているダジャレや、くだらないオヤジギャグも時折交えてます。改めて自分で聞いて笑ってしまいました。
ということで、私や linker さんの生声を聞きたい方は是非どうぞ。
Google マップの埋め込み HTML でふきだしを消してマーカーを残す方法
Google マップをブログなどに埋め込むときの HTMLコードに含まれるふきだしだけを消し、マーカーを残す方法です。

1.問題点
Google マップから検索などで特定の地域を表示させて、HTMLコードを取得して、ブログに埋め込むと、検索したときの情報がふきだしとして含まれてしまいます(下)。

「Google マップの埋め込み HTML でふきだしを消す方法(新)」では、ふきだしとマーカーを消す方法を紹介しましたが、「ふきだしを消してマーカーは残したい」というご質問を頂きましたので、本エントリーにて紹介致します。
なお、この方法は適正な方法であるかどうかは定かでありません。また、全てのブラウザで期待通りの結果になるかどうかも不明です(Firefox 3 では確認しました)。
2.解消方法
Google マップで検索結果が表示されます。ここでは「東京駅」で検索した結果を表示しています。

噴出しの×印をクリックして、ふきだしを消します。

この状態で、右上にある「このページのリンク」をクリックします。

HTMLコード(反転部分)を取得します。

取得したHTMLコードに「&iwloc=B」を追加します(青色部分)。
<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.co.jp/maps?f=q&source=s_q&hl=ja&geocode=&q=%E6%9D%B1%E4%BA%AC%E9%A7%85&sll=35.681248,139.766521&sspn=0.018684,0.020213&date=09%2F09%2F20&time=03:03&ttype=dep&noexp=0&noal=0&sort=time&tline=&ie=UTF8&ll=35.6893,139.770298&spn=0.033881,0.040426&z=14&start=0&output=embed&iwloc=B"></iframe><br /><small><a href="http://maps.google.co.jp/maps?f=q&source=embed&hl=ja&geocode=&q=%E6%9D%B1%E4%BA%AC%E9%A7%85&sll=35.681248,139.766521&sspn=0.018684,0.020213&date=09%2F09%2F20&time=03:03&ttype=dep&noexp=0&noal=0&sort=time&tline=&ie=UTF8&ll=35.6893,139.770298&spn=0.033881,0.040426&z=14&start=0" style="color:#0000FF;text-align:left">大きな地図で見る</a></small>
取得したHTMLコードをご自身のブログに貼り付ければ、ふきだしは表示されなくなります。マーカーの表示位置はコードを取得する前に、地図をドラッグして適宜補正してください。

以上です。
余談ですが、埋め込みHTMLのマークアップを object 要素に変更したい方は「Google マップの貼り付け用 HTML を valid にする」スクリプトをご利用ください。
DirectiveViewer プラグイン
Category:[管理画面, 自作プラグイン]
Tag:[DirectiveViewer, MovableType, Plugin]
Permalink
Movable Type の管理画面から環境変数の設定状況を参照できるプラグインを公開します。
このプラグインを利用すれば、次のように、管理画面に環境変数の一覧を表示できます。

1.環境変数について
Movable Type の環境変数は、システム全体の動作を定義するものです。例えば、インストール時には CGIPath が環境設定ファイル mt-config.cgi に設定されます。また、インストール後に mt-config.cgi を編集して、任意の環境変数を設定することで、動作を変更することができます。
mt-config.cgi に設定されていない環境変数については、システム内部でデフォルト値が定義されているものもあります。
2.プラグインの機能
このプラグインは以下の機能があります。
- 環境変数名(ディレクティブ)とその値を表示します。
- システム管理者権限でログインした場合のみ表示されます。
なお、環境変数は手作業で収集したので、不足しているものがあるかもしれません。また、PluginSchemaVersion のように、プラグイン名の指定が必要なものは対象外にしています。
本プラグインは Movable Type 4.x/5.x で動作します。4.x については現在確認中です。
3.プラグインのダウンロード
下記のリンクからプラグインアーカイブをダウンロードし、任意のフォルダに保存してください。
変更履歴
2009.09.18 初版
2009.09.25 v0.02 Movable Type 4.x に対応
プラグインのご利用および質問に対する回答等について、ご支援・ご賛同くださる方からの寄付をお待ち申し上げます。
4.インストール
プラグインアーカイブを解凍し、中にある DirectiveViewer フォルダを plugins ディレクトリにアップロードしてください。
ブログ管理画面より「システム」→「プラグイン」でプラグイン一覧を表示し、次のように表示されればOKです。

5.表示方法
システム管理者権限でログインし、システム管理画面の「ツール」→「環境変数」をクリックします。Movable Type 5.x であれば、メニューの一番下に表示されます(下)。

Movable Type 5.0 ベータ2リリース
Movable Type 5.0 ベータ2がリリースされました。
「Movable Type 5.0 ベータ2 リリースノート」からの引用で恐縮ですが、ベータ2では以下の内容が修正されています。最初の12行は、ベータ1のリリースノート掲載分が修正されたものです。
- Internet Explorer 6、およびInternet Explorer 7では、管理画面の一部を正しく表示できません。
- テーマのエクスポートで、フォルダを選択することができません。
- ウェブサイトおよびブログのバックアップ時にアイテムが含まれません。
- バックアップファイルを分割すると、復元したときにエラーになります。
- Windows Server環境では、ウェブサイトおよびブログのバックアップができません。
- アドレス帳にアドレスを追加しようとすると、アドレスが重複しているというエラーが出ます。
- ウェブサイトの一覧画面で、ウェブサイトを検索できません。
- TypePad トークンを取得するリンクは動作しません。
- Windows Live Writerでウェブページを投稿できません。
- コメントやプロフィールのカスタムフィールドで、必須項目を入力しなくてもエラーになりません。
- FastCGI環境で、サイドメニューがうまく動作しないことがあります。
- カテゴリーやフォルダを作成するときに、名前を入力してENTERキーを押すと、エラーが表示されます。
- MT4からのバージョンアップ時に作成される『標準のウェブサイト』の設定を変更すると、不正なサイトURLとサイトパスが保存される。
- 更新履歴がオフのときに、テンプレートのプレビューボタンが表示されない。
- テンプレートの編集画面で、正しく保存されない。
- コミュニティー掲示板で出力されるHTMLタグがおかしい。
- アクションストリームを削除できない。
- カスタムフィールド名称が、表示設定ですべて大文字で表示される。
- ウェブサイト・ブログ選択ナビゲーションで、他の『ウェブサイトを選択』『ブログを選択』を選ぶと、エラーになることがある。
- バックアップで文字化けが発生する。
- 個人用のブログの設定が行われていない場合、個人用ブログの作成を選んだ際にエラーメッセージを表示する。
- テーマの保存時に、フォルダを含めることができるようにする
- 復元後の『ログの閲覧』ボタンが正しく機能しない。
- ウェブサイトでインポート画面が表示できてしまう。
- プロフィールの"Google News"が正しくアップデートされない。
- ウェブサイトでタグ検索をおこなった場合に、ウェブサイトではなく子ブログのテンプレートで検索結果が表示される。
- 不正なblog_idが指定された場合に、エラーを表示する。
- テーマのエクスポート時の、入力項目を正しくチェックする。
- ブログのページ送りナビゲーションを正しく表示する。
- カスタムフィールド設定の種類の並び順を改善する。
- インストールウィザードでMySQLの使用を推奨するメッセージを表示する。
- コミュニティー設定の、supportディレクトリへの書き込み権限のエラーメッセージが正しく表示されない。
- テーマにサムネイル画像が設定されていない。
- カスタムフィールドの項目を、更新履歴に含める。
- カスタムフィールドの値によって並び替えができない点を修正。
- mt:Entries でsort_by="title" sort_order="ascend"をした場合に、lastn / offset / tag / limit が正しく動作しない。
- global="0|1" を指定した際に、mt:Include が動作しない。
- ウェブページの作成時に、オートセーブの結果がクリアされない。
現在、以下が既知の問題として残っています。
- ブログ記事やウェブページの保存ボタンが動作しない場合がある。
- コメントのページ送りが、一部のテーマで利用できない。
- カスタムフィールドのカテゴリー選択がわかりにくい場合がある。
- ダイナミックパブリッシング時に、カスタムフィールドのデフォルト値が表示されない。
- Firefox 3.0.xで記事を編集するときにアイテムを挿入できない。
- Firefox 3.5.xで記事を編集するときに、テキストの拡大縮小ボタンが動作しない
- アイテムの入力必須のカスタムフィールドの値が保持されない。
以下のリンクからダウンロードページに進めます。
_default モディファイア
Movable Type のグローバルモディファイア、_default を紹介します。
1.機能
このモディファイアは、テンプレートタグから出力する値が空の文字列ときに、デフォルト値として出力する内容を指定します。ただし、テンプレートで出力する値が 0 のときは「値がある」と判断されるので、_default モディファイアの値は適用されません。
2.動作例
制御系テンプレートタグを用いた動作例を以下に掲載します。もちろん通常のテンプレートタグでも利用可能です。
変数 foo の値が "OK" の場合
<mt:SetVar name="foo" value="OK" />
<mt:GetVar name="foo" _default="NG" />
実行結果
OK
変数 foo の値が空の文字列の場合
<mt:SetVar name="foo" value="" />
<mt:GetVar name="foo" _default="NG" />
実行結果
NG
変数 foo の値が 0 の場合
<mt:SetVar name="foo" value="0" />
<mt:GetVar name="foo" _default="NG" />
実行結果
0
_default の値に変数を利用
<mt:SetVar name="default" value="NG" />
<mt:SetVar name="foo" value="" />
<mt:GetVar name="foo" _default="$default" />
実行結果
NG
Yahoo! JAPAN OpenID を省略表示する
Movable Type の「最近のコメント」に、Yahoo! JAPAN OpenID を省略表示するカスタマイズです。
1.Yahoo OpenID と問題点
Yahoo OpenID は次のようになっています。
https://me.yahoo.co.jp/a/<34文字のパラメータ>
例
https://me.yahoo.co.jp/a/HoGeho6eHogeho8geHOgEHoGehOg#12345
Movable Type に、Yahoo Japan ID による認証コメントを投稿した場合、「最近のコメント」にコメント投稿者の名前には、上記の Yahoo OpenID がそのまま表示されます。正しい内容を表示しているという意味では問題はないのですが、率直に言うと、長くて見にくいです。といっても、コメンターの方が悪い訳ではありません。
ということで、表示内容を短く加工するカスタマイズを紹介します。加工前の Yahoo! JAPAN OpenID は、冒頭に挙げた例を使います。
https://me.yahoo.co.jp/a/HoGeho6eHogeho8geHOgEHoGehOg#12345
2.34文字のパラメータだけを表示
Yahoo! JAPAN OpenID の後方にある34文字のパラメータを表示するには、MTCommentAuthor タグに regex_replace タグを組み合わせます。
<mt:CommentAuthor encode_html="1" regex_replace="/https:\/\/me\.yahoo\.co\.jp\/a\/(.*)/","$1" />
加工後の表示
HoGeho6eHogeho8geHOgEHoGehOg#12345
3.「yahoo」と最後の「#xxxxx」だけを抜き出して表示
Yahoo! JAPAN OpenID の「yahoo」という文字と、最後の「#xxxxx」だけを抜き出して表示するには、先ほどと同様、MTCommentAuthor タグに regex_replace タグを組み合わせます。
<mt:CommentAuthor encode_html="1" regex_replace="/https:\/\/me\.(yahoo)\.co\.jp\/a\/.*(#.*)/","$1$2" />
加工後の表示
yahoo#12345
Amazon 2009年8月の注文ランキング
2009 年 8 月の Amazon 注文ランキングです。Movable Type 5.0 ベータ版のリリースに気をとられてエントリーするのをすっかり忘れてました。
1位:GriffinTechnology iTalk Pro GRI-IP-000063
![]() | GriffinTechnology iTalk Pro GRI-IP-000063 Griffin Technology 2006-11-10 売り上げランキング : 13181 Amazonで詳しく見る by G-Tools |
1位:WordPress 2.7対応「導入&カスタマイズ」実践ガイド―個人ブログも企業サイトも簡単&無料で構築できる!
![]() | WordPress 2.7対応「導入&カスタマイズ」実践ガイド―個人ブログも企業サイトも簡単&無料で構築できる! 秀和システム 2009-02 売り上げランキング : 11141 Amazonで詳しく見る by G-Tools |
3位:MTOS活用テクニック―カスタムフィールドで本格的なCMS機能を実現!
![]() | MTOS活用テクニック―カスタムフィールドで本格的なCMS機能を実現! 藤本 壱 ラトルズ 2009-02 売り上げランキング : 8891 Amazonで詳しく見る by G-Tools |
3位:Movable Type 4.x 本格的CMSサイトを構築するためのMTスーパーテクニック クリエイターが身につけておくべき新・100
![]() | Movable Type 4.x 本格的CMSサイトを構築するためのMTスーパーテクニック クリエイターが身につけておくべき新・100の法則。 インプレスジャパン 2008-09-12 売り上げランキング : 46023 Amazonで詳しく見る by G-Tools |
3位:Movable Type WEBデザインの新しいルール
![]() | Movable Type WEBデザインの新しいルール 翔泳社 2007-10-17 売り上げランキング : 115757 Amazonで詳しく見る by G-Tools |
3位:「勝負強い人間」になる52ヶ条―20年間勝ち続けた雀鬼がつかんだ、勝つための哲学 (知的生きかた文庫)
![]() | 「勝負強い人間」になる52ヶ条―20年間勝ち続けた雀鬼がつかんだ、勝つための哲学 (知的生きかた文庫) 三笠書房 2006-12 売り上げランキング : 15759 Amazonで詳しく見る by G-Tools |
Amazon「本 全品配送料無料キャンペーン」実施中
Amazon のトップページでも大々的に宣伝されてますが、「本 全品配送料無料キャンペーン」実施中です。
以下、キャンペーン内容を引用します。
- キャンペーン期間中は、Amazon.co.jp が販売、発送する 本、漫画、洋書(雑誌を除く)の国内配送料(300円、税込)が無料
- 対象:2009年9月11日(金)午前9時00分~2009年11月4日(水)午後23時59分(日本時間)までに確定した注文
- AmazonマーケットプレイスⓇでの注文の場合、出品者が販売、発送する商品は本キャンペーンの対象とならない。ただし、出品者が販売し、Amazon.co.jp が発送する商品は配送料無料対象
- 日本国内への発送分が本キャンペーンの対象。日本国外へ発送した場合、国外配送料・手数料がそれぞれ必要。
- 支払い方法に代金引換を選択した場合、代金引換手数料(発送1件につき税込260円)が別途必要
- お急ぎ便を利用の場合、本キャンペーンの対象商品かどうかにかかわらず、350円(税込)の配送料が別途必要
- ギフト包装を選択した場合、ギフト包装料(税込300円)が別途必要
- キャンペーン期間前に確定した注文は、本キャンペーンの対象外
- 1-Clickで注文した場合、注文確定までに30分かかるので、キャンペーン期間内に注文を確定するよう留意すること
- Amazon.co.jpは、本キャンペーンを予告なく変更または終了する権利を保有
要約すると、以下の条件を満たしていれば、本が無料になるようです。
- 雑誌でない
- 日本国内への発送
- 代金引換以外での支払い
- お急ぎ便を利用しない
- ギフト包装しない
- Amazonマーケットプレイスであれば、出品者でなく、Amazon.co.jp が発送する商品
ということで、最近売れている本で個人的に面白そうなものを紹介しておきます。
たった1通で人を動かすメールの仕掛け (青春新書PLAY BOOKS)
![]() | 青春出版社 2009-08-25 売り上げランキング : 6 おすすめ平均 ![]() このメールの例えは素晴らしい (多分)実績が物語る心に残るメール おもしろいから、まぁイイです 人間心理をついた名著 期待していたのですが。Amazonで詳しく見る by G-Tools |
思考の整理学 (ちくま文庫)
![]() | 筑摩書房 1986-04-24 売り上げランキング : 8 おすすめ平均 ![]() 売れている様なので 要約 ライフハック系の古典的作品 "学"ではない。 ホメテヤラネバAmazonで詳しく見る by G-Tools |
自己プロデュース力
![]() | ワニブックス 2009-09-01 売り上げランキング : 20 おすすめ平均 ![]() やっぱ紳助はすごいわ 簡単なことではないけれど 読んで良かった... うーん・・・ 自分だけで独占したい。Amazonで詳しく見る by G-Tools |
誰とでも15分以上 会話がとぎれない!話し方66のルール
![]() | すばる舎 2009-07-24 売り上げランキング : 29 おすすめ平均 ![]() 気が楽になりました スタンダードなコミュニケーションスキルの本 楽しさ満点 すごい 15分以上話せても読むべしAmazonで詳しく見る by G-Tools |
日本人の知らない日本語
![]() | メディアファクトリー 2009-02-18 売り上げランキング : 54 おすすめ平均 ![]() 買ってよかった! 笑ってしまうエピソードのなかに、言語のシンジツが! 笑えないほどの国語力を身につけたい 日本人だからこそ読みたい本 涙が出るほど、笑えるが、立場を変えて読んでみたらコワイ本だ。PART2を買うと、もうこの世界からは抜けられなくなるでしょう。Amazonで詳しく見る by G-Tools |
人を動かす 新装版
![]() |
創元社 1999-10-31 売り上げランキング : 31 おすすめ平均 ![]() ゴールデンルール 最初に読むべき必読書 人として生きる上で絶対に見てほしい 今年読んだベスト3 当たり前のことだけど、Amazonで詳しく見る by G-Tools |
「人を動かす」は昔読んだことがあるのですが、名著ということで。
宿泊先で
InvalidateCodeMirror プラグイン
Category:[管理画面, 自作プラグイン]
Tag:[InvalidCodeMirror, MovableType, Plugin]
Permalink
Movable Type 5 のテンプレート編集画面で CodeMirror を無効にするプラグインです。
1.機能
プラグイン適用前

プラグイン適用後

注:本エントリー投稿時点での MT5 はベータ版なので、ベータ利用許諾契約に抵触するようでしたらご指摘ください。速やかにプラグインのダウンロードリンクを削除します。
2.プラグインのダウンロード
下記のリンクからプラグインアーカイブをダウンロードし、任意のフォルダに保存してください。
修正履歴
2009.09.11 初版
2011.06.13 v0.10 MT5.1対応
2011.01.15 v0.11 MT5.1でテンプレートプレビューが正常に動作しなくなる不具合を対処
- InvalidateCodeMirror_0_11.zip(MT5.0x/MT5.1x対応)
プラグインのご利用および質問に対する回答等について、ご支援・ご賛同くださる方からの寄付をお待ち申し上げます。
3.プラグインのインストール
プラグインアーカイブを解凍し、中にある InvalidCodeMirror フォルダを plugins ディレクトリにアップロードしてください。
ブログ管理画面より「システム」→「プラグイン」でプラグイン一覧を表示し、次のように表示されればOKです。

あとはテンプレート編集画面を開いて、表示が変更されたことを確認してください。
EditFieldController プラグイン v0.02
Category:[管理画面, 自作プラグイン]
Tag:[EditFieldController, MovableType, Plugin]
Permalink
先日公開した「EditFieldController プラグイン」をバージョンアップしました。
1.変更内容
- ロール名による制御機能を追加
- システム管理者のスキップ機能を追加
次の画面のとおり、機能追加した設定項目をプラグイン設定画面に加えました。
![]()
2.ダウンロード
最新版のプラグインは下記のページよりダウンロードしてください。
親カテゴリーアーカイブに表示したサブカテゴリーのブログ記事にサブカテゴリー名を表示する
Movable Type の親カテゴリーアーカイブに表示したサブカテゴリーのブログ記事に、サブカテゴリー名を表示するカスタマイズです。「親カテゴリー名しか表示できません」というご質問を頂きましたので、本エントリーで紹介致します。
1.完成例
下のサンプルは、「days」という親カテゴリーアーカイブに、「days」カテゴリーのブログ記事と、そのサブカテゴリの「food」カテゴリーのブログ記事を表示したものです。
「food」カテゴリーのブログ記事「今日の晩ごはん」のカテゴリー名は「food」、「days」カテゴリーのブログ記事「ブログ始めました」のカテゴリー名は「days」になっています。
カテゴリー名にリンクがない場合

カテゴリー名にリンクがある場合

ちなみに、親カテゴリーアーカイブにサブカテゴリーのブログ記事を表示させるには、MTEntries タグの代わりに、MTEntriesWithSubCategories タグを利用しますが、詳細は下記の記事を参照願います。
2.カスタマイズ
冒頭の画面の位置にカテゴリを表示するには、ブログ管理画面の「デザイン」→「テンプレート」をクリックし、「ブログ記事の概要」をクリックして、以下の青色部分を追加します。
2.1 リンクなしのカテゴリー名を表示する場合
サブカテゴリに属するブログ記事のプライマリカテゴリを表示するには、MTEntryCategory を利用します。MTCategoryLabel では親カテゴリーのカテゴリー名が表示されてしまうので気をつけましょう。
...前略...
<div class="asset-meta">
<span class="byline">
<mt:If tag="EntryAuthorDisplayName">
<span class="vcard author"><$mt:EntryAuthorLink show_hcard="1"$></span> (<abbr class="published" title="<$mt:EntryDate format_name="iso8601"$>"><$mt:EntryDate format="%x %X"$></abbr>)
<mt:Else>
<abbr class="published" title="<$mt:EntryDate format_name="iso8601"$>"><$mt:EntryDate format="%x %X"$></abbr>
</mt:If>
</span>
<span class="separator">|</span> <mt:EntryCategory />
<mt:Unless name="hide_counts" eq="1">
<mt:IfCommentsActive><span class="separator">|</span> <a href="<$mt:EntryPermalink$>#comments"><$mt:EntryCommentCount singular="コメント(1)" plural="コメント(#)" none="コメント(0)"$></a></mt:IfCommentsActive>
<mt:IfPingsActive><span class="separator">|</span> <a href="<$mt:EntryPermalink$>#trackbacks"><$mt:EntryTrackbackCount singular="トラックバック(1)" plural="トラックバック(#)" none="トラックバック(0)"$></a></mt:IfPingsActive>
</mt:Unless>
</div>
...後略...
2.2 カテゴリーアーカイブへのリンクつきのカテゴリー名を表示する場合
カテゴリーアーカイブへのリンクつきのカテゴリー名を表示するには、さらに制御タグと MTCategoryArchiveLink タグ、MTCategoryLabel タグを組み合わせます。
...前略...
<div class="asset-meta">
<span class="byline">
<mt:If tag="EntryAuthorDisplayName">
<span class="vcard author"><$mt:EntryAuthorLink show_hcard="1"$></span> (<abbr class="published" title="<$mt:EntryDate format_name="iso8601"$>"><$mt:EntryDate format="%x %X"$></abbr>)
<mt:Else>
<abbr class="published" title="<$mt:EntryDate format_name="iso8601"$>"><$mt:EntryDate format="%x %X"$></abbr>
</mt:If>
</span>
<span class="separator">|</span>
<mt:EntryCategory setvar="category" />
<MTEntryCategories><mt:If tag="CategoryLabel" eq="$category"><a href="<$MTCategoryArchiveLink$>"></mt:If><$MTCategoryLabel$></a></MTEntryCategories>
<mt:Unless name="hide_counts" eq="1">
<mt:Unless name="hide_counts" eq="1">
<mt:IfCommentsActive><span class="separator">|</span> <a href="<$mt:EntryPermalink$>#comments"><$mt:EntryCommentCount singular="コメント(1)" plural="コメント(#)" none="コメント(0)"$></a></mt:IfCommentsActive>
<mt:IfPingsActive><span class="separator">|</span> <a href="<$mt:EntryPermalink$>#trackbacks"><$mt:EntryTrackbackCount singular="トラックバック(1)" plural="トラックバック(#)" none="トラックバック(0)"$></a></mt:IfPingsActive>
</mt:Unless>
</div>
...後略...
Ajax ダイナミック月送りカレンダー
Category:[カレンダー, ダイナミックパブリッシング]
Tag:[Calendar, Customize, DynamicPublishing, MovableType]
Permalink
Movable Type 4 以降のバージョンで、ブログ記事が投稿されていない月のカレンダーも含めて月送りができるカレンダーです。リアルタイムカレンダー(本日の日付の装飾)および土・日・休日表示も盛り込まれています。

このカスタマイズは下記のサイトで紹介されています。これまで月送りカレンダーのカスタマイズは色々行なってきましたが、ブログ記事が投稿されていない月のカレンダーの表示方法が思いつきませんでした。このアイデアは素晴らしいと思います。
1.概要
Ajax ダイナミック月送りカレンダーの動作概要を図に示します(図をクリックすれば拡大します)。
①:ページを表示します
②:ページに埋め込んだスクリプトで Ajax 呼び出しを行ないます
③:Ajax から呼び出すページ(カレンダー)をダイナミックパブリッシングで起動します
④:ページを呼び出す際に、年月データをクエリーとして与え、プラグインで取得し、テンプレーとに引継ぎます
⑤:取得した年月データを MTCalendar タグの month モディファイアの値として利用し、該当月のカレンダーを生成します
⑥⑦:生成したデータを返却し、最初のページに表示します。表示されたカレンダーの前月・次月のリンクにも同じ仕組みを適用します。前月・次月の算出は、MTArchive 系テンプレートタグではなく、制御系テンプレートタグで計算します。
このような構造にすることで、ブログ記事がない月のカレンダーを含めた月送りが実現できます。
なお、上記の説明でお分かりの通り、このカスタマイズはダイナミックパブリッシングの利用が可能な環境に限ります。
以下、カスタマイズ方法です。
2.スクリプトのダウンロード・アップロード
下記のスクリプトをダウンロードします。
prototype.js("Download the latest version" のリンクをクリック)ajaxCalendar.jsdayChecker.js(「2.ダウンロード」にある dayChecker.js をクリック)
ダウンロードした ajaxCalendar.js と dayChecker.js はメインページと同じディレクトリにアップロードしてください。
また prototype.js も、ダウンロードしたスクリプトをメインページと同じディレクトリにアップロードしてください。
3.プラグインのダウンロード・アップロード
下記のリンクをクリックして、GetQueryString プラグインをダウンロードします。このプラグインは、ダイナミックパブリッシングでカレンダーページを呼び出すときにクエリーを取得するためのものです。
ダウンロードしたアーカイブを展開し、中にある GetQueryString フォルダを plugins ディレクトリにアップロードします。
アップロード後、システム管理画面の「ツール」→「プラグイン」で GetQueryString が表示されていればOKです。

4.日別アーカイブの追加
この設定は、カレンダーに表示された日付のリンク先のページとして日別アーカイブを生成するためのものです。
「デザイン」→「テンプレート」→「アーカイブテンプレート」→「ブログ記事リスト」を選択。

アーカイブマッピングの「新しいアーカイブマッピングを作成」をクリック。

「日別」を選択して「追加」をクリック。

これで日別アーカイブが追加されました。

再構築アイコンをクリックして、日別アーカイブページを生成してください。
5.カレンダーテンプレート作成
管理メニューの「デザイン」→「テンプレート」→「インデックステンプレート」→「インデックステンプレートを作成」をクリック。

次画面で下記を設定してください。
- テンプレート名(一番上のテキストフィールド):カレンダー
- 出力ファイル名:calendar.php
- テンプレートの種類:カスタムインデックステンプレート
- ファイルへのリンク:(設定不要)
- 公開:ダイナミック
- テンプレートの内容(テキストエリア):下記のいずれか
デフォルトテンプレートの場合
<mt:GetQueryString name="date" setvar="yearmonth" />
<mt:GetQueryString name="date" regex_replace="/^(\d\d\d\d).*/","\$1" setvar="year" />
<mt:GetQueryString name="date" regex_replace="/.*(\d\d)$/","\$1" setvar="month"/>
<mt:GetVar name="month" op="--" setvar="prev_month" />
<mt:GetVar name="year" setvar="prev_year" />
<mt:if name="prev_month" eq="0">
<mt:SetVar name="prev_month" value="12" />
<mt:SetVar name="prev_year" op="--" />
</mt:if>
<mt:if name="prev_month" lt="10">
<mt:GetVar name="prev_month" regex_replace="/(.*)/","0\$1" setvar="prev_month" />
</mt:if>
<mt:GetVar name="month" op="++" setvar="next_month" />
<mt:GetVar name="year" setvar="next_year" />
<mt:if name="next_month" eq="13">
<mt:SetVar name="next_month" value="1" />
<mt:SetVar name="next_year" op="++" />
</mt:if>
<mt:if name="next_month" lt="10">
<mt:GetVar name="next_month" regex_replace="/(.*)/","0\$1" setvar="next_month" />
</mt:if>
<div class="widget-calendar widget">
<h3 class="widget-header">
<a href="javascript:void(0);" onclick="getCalendar('<mt:BlogURL />calendar.php?date=<mt:getvar name="prev_year" /><mt:getvar name="prev_month">');"><</a>
<mt:GetVar name="year" />年<mt:GetVar name="month" regex_replace="/0(\d)/","\$1" />月
<a href="javascript:void(0);" onclick="getCalendar('<mt:BlogURL />calendar.php?date=<mt:getvar name="next_year" /><mt:getvar name="next_month">');">></a>
</h3>
<div class="widget-content">
<table summary="<mt:GetVar name="year" />/<mt:GetVar name="month" />">
<tr height="15">
<th abbr="Sunday" class="sunday">Sun</th>
<th abbr="Monday">Mon</th>
<th abbr="Tuesday">Tue</th>
<th abbr="Wednesday">Wed</th>
<th abbr="Thursday">Thu</th>
<th abbr="Friday">Fri</th>
<th abbr="Saturday" class="saturday">Sat</th>
</tr>
<mt:Calendar month="$yearmonth">
<mt:CalendarWeekHeader>
<tr>
</mt:CalendarWeekHeader>
<td><mt:CalendarIfBlank><mt:Else><span></mt:Else></mt:CalendarIfBlank><mt:CalendarIfEntries><mt:Entries lastn="1"><a href="<mt:EntryLink archive_type="Daily" />"><mt:CalendarDay /></a></mt:Entries></mt:CalendarIfEntries><mt:CalendarIfNoEntries><mt:CalendarDay /></mt:CalendarIfNoEntries><mt:CalendarIfBlank><mt:Else></span></mt:Else></mt:CalendarIfBlank></td>
<mt:CalendarWeekFooter>
</tr>
</mt:CalendarWeekFooter>
</mt:Calendar>
</table>
</div>
</div>
公開テンプレートの場合
<mt:GetQueryString name="date" setvar="yearmonth" />
<mt:GetQueryString name="date" regex_replace="/^(\d\d\d\d).*/","\$1" setvar="year" />
<mt:GetQueryString name="date" regex_replace="/.*(\d\d)$/","\$1" setvar="month"/>
<mt:GetVar name="month" op="--" setvar="prev_month" />
<mt:GetVar name="year" setvar="prev_year" />
<mt:if name="prev_month" eq="0">
<mt:SetVar name="prev_month" value="12" />
<mt:SetVar name="prev_year" op="--" />
</mt:if>
<mt:if name="prev_month" lt="10">
<mt:GetVar name="prev_month" regex_replace="/(.*)/","0\$1" setvar="prev_month" />
</mt:if>
<mt:GetVar name="month" op="++" setvar="next_month" />
<mt:GetVar name="year" setvar="next_year" />
<mt:if name="next_month" eq="13">
<mt:SetVar name="next_month" value="1" />
<mt:SetVar name="next_year" op="++" />
</mt:if>
<mt:if name="next_month" lt="10">
<mt:GetVar name="next_month" regex_replace="/(.*)/","0\$1" setvar="next_month" />
</mt:if>
<table summary="<mt:GetVar name="year" />/<mt:GetVar name="month" />">
<caption class="calendarhead">
<a href="javascript:void(0);" onclick="getCalendar('<mt:BlogURL />calendar.php?date=<mt:getvar name="prev_year" /><mt:getvar name="prev_month">');"><</a>
<mt:GetVar name="year" />年<mt:GetVar name="month" regex_replace="/0(\d)/","\$1" />月
<a href="javascript:void(0);" onclick="getCalendar('<mt:BlogURL />calendar.php?date=<mt:getvar name="next_year" /><mt:getvar name="next_month">');">></a>
</caption>
<tr height="15">
<th abbr="Sunday" class="sunday">Sun</th>
<th abbr="Monday">Mon</th>
<th abbr="Tuesday">Tue</th>
<th abbr="Wednesday">Wed</th>
<th abbr="Thursday">Thu</th>
<th abbr="Friday">Fri</th>
<th abbr="Saturday" class="saturday">Sat</th>
</tr>
<mt:Calendar month="$yearmonth">
<mt:CalendarWeekHeader>
<tr>
</mt:CalendarWeekHeader>
<td><mt:CalendarIfBlank><mt:Else><span></mt:Else></mt:CalendarIfBlank><mt:CalendarIfEntries><mt:Entries lastn="1"><a href="<mt:EntryLink archive_type="Daily" />"><mt:CalendarDay /></a></mt:Entries></mt:CalendarIfEntries><mt:CalendarIfNoEntries><mt:CalendarDay /></mt:CalendarIfNoEntries><mt:CalendarIfBlank><mt:Else></span></mt:Else></mt:CalendarIfBlank></td>
<mt:CalendarWeekFooter>
</tr>
</mt:CalendarWeekFooter>
</mt:Calendar>
</table>
テンプレートの設定部分は次のようになります。

6.テンプレート修正
6.1 外部ファイルのインクルード
ブログ管理画面の「デザイン」→「テンプレート」→「テンプレートモジュール」→「HTMLヘッダー(公開テンプレートの場合は「ヘッダー」)」をクリックし、下記の内容を追加して「保存」をクリック。
<script type="text/javascript" src="<$MTBlogURL$>prototype.js"></script>
<script type="text/javascript" src="<$MTBlogURL$>ajaxCalendar.js"></script>
<script type="text/javascript" src="<$MTBlogURL$>dayChecker.js"></script>
注:利用しているテンプレートによって設定位置が異なりますが、ブラウザでページを表示したときに <head>~</head> の間(</head> の直前を推奨)になるように設定します。
6.2 カレンダー表示部分の設定
「デザイン」→「ウィジェット」→ウィジェットテンプレートの「カレンダー」をクリックし、下記の内容に入れ替えたあと、「保存」をクリックします。「カレンダー」ウィジェットがない場合は、「ウィジェットテンプレートを作成」をクリックして以下の内容を設定してください。
<div id="calendar"></div>
<script type="text/javascript">
getCalendar("<$MTBlogURL$>calendar.php?date=<MTDate format="%Y%m" $>");
</script>
div は空要素ですが、Ajax によってこの部分にカレンダーが表示されます。
修正した「カレンダー」ウィジェットを利用していない場合は、ブログ管理画面の「デザイン」→「ウィジェット」をクリック、さらに利用しているウィジェットセットをクリックし、「インストール済み」にドラッグして「変更を保存」をクリックしてください。
7.CSS修正
「デザイン」→「テンプレート」→「スタイルシート」を選択し、下記の内容を追加して「保存および再構築」をクリックします。
#calendar {
margin: 5px 0 10px;;
color: #444444;
}
.calendarhead {
padding-bottom: 5px;
font-size: 9px;
letter-spacing: 0.2em;
}
#calendar table {
padding: 0;
border-collapse: collapse;
}
#calendar th {
padding-bottom: 3px;
text-align: center;
font-size: 9px;
width: 23px;
}
#calendar td {
padding: 2px 0;
text-align: center;
font-size: 10px;
line-height: 120%;
}
.today {
display: block;
border: 1px solid #444444;
}
.sunday,
.holiday,
.holiday a:link,
.holiday a:visited {
color: #e50003;
}
.saturday,
.saturday a:link,
.saturday a:visited {
color: #0000ff;
}
公開テンプレートの場合、すでにカレンダー関係のスタイル設定が行われており、設定の競合を避けるため、古い設定(下)を削除またはコメントアウトしてください。
/* カレンダー */
.calendarhead {
padding-bottom: 5px;
text-align: center;
color: #333;
font-size: 9px;
background: none;
letter-spacing: 0.2em;
}
#calendar table {
text-align: center;
padding: 0px;
border-collapse: collapse;
}
#calendar th {
padding-bottom: 3px;
font-size: 8px;
width: 23px;
}
#calendar td {
padding: 2px 0;
font-size: 9px;
line-height: 120%;
}
span.day {
text-align: center;
font-size: 9px;
}
span.saturday {
color: blue;
}
span.sunday {
color: #e50003;
}
td.today {
display: block;
border: 1px solid #333;
}
8.再構築
全てのページを再構築します。これでメインページ等を表示してカレンダーが表示されれば完成です。
9.注意事項
日別アーカイブは先に再構築しておいてください。日別アーカイブがなくても再構築エラーにはなりませんが、日付のリンクから日別アーカイブに移動できません。
10.その他
このカスタマイズではインデックステンプレートのみを使用しましたが、ブログ記事のある月はアーカイブテンプレート、そうでない月はインデックステンプレートを利用するという、ハイブリッドな月送りカレンダーについても検討中です。
2011.02.04
GetQueryStringのバージョンを0.02にアップしました。
2011.02.05
テンプレートの一部を修正しました。
remove_old_sessions で不要なセッションデータを削除する
Category:[5.0, ツール]
Tag:[5.0, MovableType, remove_old_sessions, Tool]
Permalink
Movable Type 5.0 の tools ディレクトリに追加された remove_old_sessions を紹介します。
1.機能
このツールは、パラメータで指定した日数を超過した各セッションデータを、mt_session テーブルから削除します。
2.コマンドパラメータ
ツールのコマンドパラメータは次のようになります。具体的な実行方法は3項を参照してください。
- remove_old_sessions --ttl <days> --kind <comma separated list of kinds>
パラメータの意味は次の通りです。
- --ttl:日数を指定します(必須パラメータ)。30 を指定すれば 30日以上経過したセッションを削除します
- --kind:セッションの種類(mt_session の session_kind)を指定します(オプションパラメータ)。セッションの種類を複数指定する場合はカンマで区切ります。設定値と意味は次の通りです。なお、US/UA/SI は本パラメータで指定しない限り削除されません。
- SI
- アクティブなコメント投稿者セッション
- KY
- リモートコメント認証サービスの公開キー
- AN
- 認証システムで使用するnonce値
- US(User Sessions)
- アクティブなユーザーセッション
- NW
- ダッシュボードウィジェットにあるニュースのキャッシュコンテンツ
- AF(Activity Feeds)
- アクティビティフィードのセッション
- AS(AutoSave)
- ブログ記事とテンプレートの自動保存データ
- TF(Temporary File)
- ブログ記事とテンプレートのプレビューで生成された一時ファイルデータ
- CR(Commenter Registration)
- コメンター登録のトークン
- CS
- mt-search.cgiによるブログ検索結果のキャッシュ
- UA
- 特定のユーザーが最後にログインしたことを示すアクティブユーザーとしての記録
- CO(Cached Object)
- MT::Cache::Sessionクラスによるキャッシュデータ(テンプレートモジュールのキャッシュ)
- BU(BackUp)
- バックアップファイルを一定期間だけダウンロードできるためのセッション(期限切れになった後、MTによって提供されたバックアップファイルのリンクからバックアップデータはダウンロードできません)
- CC(Category Cache)
- 特定のカテゴリーデータのキャッシュ
- SC(System Check)
- mt-check.cgiの実行結果
- PT(Periodic Task)
- 最後に起動したスケジュールタスク
- CA(CaptchA)
- captchaのトークン(10分で期限切れになります)
- TC(Tag Cache)
- 特定のタグデータのキャッシュ
3.起動方法
コマンドラインから起動します。remove_old_sessions には、事前に実行権のパーミッションを与えてください。
アプリケーションディレクトリが mt の場合の起動例を以下に示します。
% cd /home/www/mt % ./tools/remove_old_sessions --ttl 30 --kind SI,KY,AN
実行すると、削除予定データを表示した後、「Proceed?」と表示されるので、y やyes を入力すれば削除を実行します。
実行画面

4.mt_session テーブルのサイズ
remove_old_sessions 実行前と実行後の mt_session テーブルのサイズを示します。
Movable Type 5.0 仕様変更点と注意事項
Movable Type 4.x から Movable Type 5.0 の仕様変更点と注意事項を掲載します。この記事は公式サイトの「Beta 1 リリースノート」の内容に一部加筆して、構成を変更したものです。
環境
- MySQL 5.0以上のみをサポートします。(Enterprise は、Oracle Database 11gとMicrosoft SQL Server 2008をサポートする予定)。SQLiteとPostgreSQLはサポートされません。
- Perl 5.8.1 以上のみをサポートします。
- ダイナミックパブリッシングを利用するには、PHP5.xが必要です。
- 文字コードは UTF-8 のみをサポートします。
- ダイナミックパブリッシングでは、MT:AssetでTiff形式およびBMP形式をサポートしていません。
「The blog of H.Fujimoto - Movable Type 5 β1レビュー(動作環境とインストール)」ではSQLite 等も動作するようです。
ウェブサイトとブログ
- MT4.xからMT5.0にバージョンアップした場合、作成済みのブログは「標準のウェブサイト」というウェブサイトに配置されます。「標準のウェブサイト」のウェブサイトのサイトURLとサイトパスは空白になっています(バージョンアップ前に作成されたブログの公開設定の互換性を保持するため)。そのため、既存のブログの投稿・公開はできますが、「標準のウェブサイト」自体にコンテンツを投稿することはできません。
- ウェブサイトの追加により、ウェブサイト間でブログが移動できます。ただし、アップロード済みのファイルは、新しいウェブサイトのパスに手動でコピーする必要があります(以前のパスにあるファイルを残しておけばデッドリンクを防止できます)。
編集画面
- ブログ記事およびウェブページの投稿画面で投稿欄のリサイズ機能が削除されました。
- テンプレート編集エディタをCodeMirrorに変更したため、より多くのブラウザで安定した動作をするようになりました。そのためシンタックスハイライト(強調表示)の有効・無効を切り替える機能が削除されました。
カスタムフィールド
- コメント投稿フォームのカスタムフィールドで「日付と時刻」を表示した場合、管理画面のカスタムフィールド「日付と時刻」で表示されるような入力インターフェースは表示されません。これはJavaScriptライブラリが読み込まれないためです。
- アイテムにカスタムフィールドを追加する場合、アイテムの種類に応じて、『画像』『ビデオ』『オーディオ』をシステムオブジェクトとして選択し、それ以外の種類のアイテムに追加する場合は『アイテム』をシステムオブジェクトとして指定します。
- コメントにカスタムフィールドを追加した場合は、テンプレートを編集してカスタムフィールドを表示する必要があります。つまり、管理画面のカスタムフィールドのように自動でテンプレートタグが追加されるものではありません。
履歴管理
- テンプレートの更新履歴には、「出力ファイル名」「公開」は含まれますが、「テンプレートの種類」「ファイルへのリンク」は含まれません。
インポート・エクスポート
- カスタムフィールドの内容がインポート・エクスポートできるようになりました(注:エクスポートデータにカスタムフィールドが含まれるのは動作確認しました。キーワードはベースネーム。)。ただし、インポート・エクスポートの際にシステムレベルのカスタムフィールドは含まれません。
ユーザー
- 「新しいユーザーの初期設定」で個人用のブログを作成する際に、MT4.xでは「複製するブログ」を選択していましたが、MT5.0では「適用するテーマ」を選択します。
権限
- 「ウェブサイト管理者」が持つ権限を「ウェブサイトと所属ブログの管理」の権限を持つように変更されました。これに伴い、バージョンアップ時に、既存の「ウェブサイト管理者」は「ウェブサイト管理者(MT4)」に表記が変更されます。
- 「デザイナー」の権限を「テーマの管理」の権限を持つように変更されました。これに伴い、バージョンアップ時に既存の「デザイナー」は「デザイナー(MT4)」に表記が変更されます。
- ウェブページの管理だけを行うロールとして「ウェブマスター」が追加されました。このロールではファイルのアップロードも可能です。
- 「ウェブサイトと所属ブログの管理」権限が追加されました。この権限には、ウェブサイトとウェブサイト配下に新たに作成するブログの管理権限が与えられます。
- 「ウェブサイトの管理」権限は、ウェブサイトに属するブログの管理権限は与えられず、ウェブサイトのみを管理することができます。ブログを作成する権限として、「ウェブサイトの管理」権限に加え、システム権限「ブログの作成」が必要です。
- 「テーマの管理」権限が追加されました。
- 一部の権限の名称を変更しました(ベータ1では変更されていない?)。MT4.x:ブログ管理者→MT5:ブログの管理/MT4.x:ブログの設定→MT5:設定の変更/MT4.x:ブログを再構築→MT5:サイトを再構築
言語
- MTインストールフォルダのindex.htmlで、言語を選択してログインした場合、ユーザー設定の仕様言語ではなく、index.htmlで指定した言語で管理画面が表示されます。ユーザー設定を反映したい場合は、一度サインアウトし、index.htmlからではなく、直接mt.cgiからサイインインしてください。
Movable Type 4.261 から Movable Type 5.0 へのアップグレード検証
Movable Type 5 では「ウェブサイト」が導入された関係で、Movable Type 4 からのアップグレードでどのようになるのか試してみました。
確認した環境は Windows XP + xampp1.66a で、データベースは MySQL5.0 です。
アップグレード前のブログのメインページです。
アップグレードの前準備は、以下の通りです。
- MT4.261 のディレクトリ(mt)をリネーム(mt-- 等)
- MT5.0 のディレクトリ(mt)を作成プログラムを配置
- MT4.261 の mt-config.cgi を MT5.0 のアプリケーションディレクトリにコピー
- mt ディレクトリにアクセス
アップグレード開始画面が表示されました。日本語のローカライズはまだ行われていないようです。アップグレードの際には環境変数 DefaultLanguage ja の設定が必要です。
サインインします。サインイン後、アップグレードが開始します。

アップグレード(データベースの更新)は無事に完了しました。
ウェブサイトのダッシュボードには「Generic Website」というウェブサイトが表示されていました。

また、ブログの一覧には、アップグレード前のブログが表示されています。

ブログのダッシュボードには、アップグレード前のブログ記事が継承されています。
ブログの全般設定にもアップグレード前のブログ情報が設定されています。

「Generic Website」の全般設定のサイトURL・サイトパスには最低限の情報しか設定されていません。ちなみに、ウェブサイトにはアーカイブパスは存在しません。

アップグレード後に再構築したブログのメインページです。
当然ですが、テンプレートを変更した訳ではないので、メインページの表示に違いはありません。ということで、アップグレード前とアップグレード後の meta 要素を示しておきます。
アップグレード前
![]()
アップグレード後
![]()
Movable Type 5.0 新機能のまとめ
Movable Type 5.0 の機能についてまとめましたので、管理画面および Movable Type 4 との違いを交えながら簡単に紹介します。
この記事は、Movable Type 5.0 ベータ1を元に作成しています。
1.ウェブサイトとブログ
Movable Type 5 ではサイト全体の構成に「ウェブサイト」という概念が加わりました。まず最初にイメージを図示します。
MT4 では、インストールした Movable Type のサイトの単位は「ブログ」であり、メインページやウェブページはブログの中の構成要素となっています(下)。例えば、ウェブページだけを作りたい場合でも、最低1つのブログを作成する必要がありました。

MT5 では、「ウェブサイト」という概念が加わり、ブログは「ウェブサイト」の構成要素になりました(下)。また、メインページやウェブページも「ウェブサイト」の構成要素となり、ブログを作成せずにウェブページの作成が可能になりました。

次にインストール画面・管理画面による機能および差分を説明します(機能以外の説明も一部含んでいます)。
Movable Type 4 までは、インストールウィザードの途中でブログの設定画面が表示されましたが、ウェブサイトの設定画面になりました。つまり、インストール時には「ウェブサイト」が作成されます。また、テーマ(Movable Type 4 までの「テンプレートセット」)にある「クラシックウェブサイト」は、「既定のブログ」のデザインと同じです。「プロフェッショナルウェブサイト」も選択可能です。
インストール直後のダッシュボードです。グローバルナビゲーションがなくなり、下にある「お気に入りのウェブサイト/ブログ」から、それぞれの管理画面に移動します。再構築アイコンと表示アイコンの位置は MT4 のままです。
あるいは、左上の矢印をクリックしたサブメニューから移動することもできます。

インストール時に作成したウェブサイトのダッシュボードです。グローバルナビゲーションは、Movable Type 3 のように左に戻りました。
MT5 で追加された「ウェブサイト」では、ウェブページやブログを作成できます。MT4 ではウェブページを作成するために、少なくとも1つのブログが必要でしたが、MT5 ではブログも何もない「ウェブサイト」という単位にウェブページを作成することができるようになりました。
逆に、ブログ記事を作成するには、ウェブサイトに紐づいたブログを作成する必要があります。ウェブサイトのグローバルナビゲーションにある「ブログ記事」から直接作成はできません。

ウェブサイトのウェブページ作成画面です。基本的に MT4 のウェブページの機能を踏襲しています。画面右下には、英語版の MT4.3 で追加されたアイテム管理用のメニューが MT5 で追加されています。
ウェブサイトのテンプレート一覧です。アーカイブテンプレートは「ウェブページ」のみで、「ブログ記事リスト」と「ブログ記事」はありません。ただし、インクルードするテンプレートモジュールはまだ「ブログ記事の概要」を使っているようです。
ウェブサイトのブログ作成画面です。MT4まではシステム管理画面でブログを作成していましたが、ブログの作成はウェブサイト管理画面で行ないます(システム管理画面ではウェブサイトの新規作成のみ行なえます)。
ブログのサイトパスは、ウェブサイトのサイトパスまたはサイトパス配下になります。
作成したブログのダッシュボードです。
ブログでは、MT4 までと同様、ブログ記事とウェブページの2種類の記事が作成できます。

ブログ記事作成画面です。
2.テーマ
MT5 では「テーマ」という概念が導入されました。「テーマ」とは、MT4 のテンプレートセットの構造を拡張したもので、カテゴリ、カスタムフィールド、スタティックファイルなどをセットにして定義できるものです。
下はウェブサイトのテーマ選択画面です。ここでは、デフォルトで用意されたテーマと、ユーザーが作成したテーマ(First Websiteのテーマ 1.0)が表示されています。
テーマを作成するには、YAML(config.yaml)を書く方法もありますが、「ツール」→「テーマのエクスポート」で出力できるようになっています。
テンプレートセット・カテゴリ・カスタムフィールドについては、「テーマオプション」の「詳細」のリンクをクリックすれば、エクスポート時に各項目の要・不要の選択画面に移動します。つまり必要な設定項目があればエクスポート時に決めることができます。
エクスポートしたテーマは、アプリケーションディレクトリに新たに追加された themes ディレクトリ配下に、「出力ファイル名」のディレクトリ名で出力されます。
なお、MT4 までのテンプレートセットは plugins ディレクトリに配置することで、「テーマ」として読み込むことができます(「デザイン」→「テンプレート」の「テンプレートの初期化」画面からテンプレートセット選択はできなくなっています)。
3.履歴管理
ブログ記事・ウェブページの履歴管理ができるようになりました。

「リビジョン表示」のリンクをクリックすれば、これまでのリビジョンと変更内容(記事編集画面に「変更メモ」という入力フィールドに記入)が表示されます。日付の部分がリンクになっているので、クリックすればその時の内容で編集画面が表示されます。
内容を確認後、ブログ記事の保存と同様、「更新」をクリックすれば、そのリビジョンで再構築されます。過去のリビジョンは新しいリビジョンになりますが、過去のリビジョンは消えないようです。
また、テンプレートの履歴も管理できます。右側にリビジョン表示、下に「変更メモ」があります。
4.カスタムフィールド
カスタムフィールドのシステムオブジェクトの項目が追加されました。下は、選択項目の一番多いシステム管理画面のカスタムフィールドのシステムオブジェクトで、ウェブサイト・ビデオ・テンプレート・アイテム・ブログ・画像・オーディオ・コメントが追加されています。

種類も、オーディオ・アイテム・ビデオが増えています。

なおベータ1では、システムオブジェクトに「コメント」を選択した場合、「種類」から画像は選択できないようです。

また、カスタムフィールドでカテゴリを選択した場合、適用させたいカテゴリを選択することができます。
5.テンプレートタグ
追加されたと思われるテンプレートタグを以下に挙げておきます。追加されたテンプレートタグの多くは、ウェブサイト関連のものです。概要が間違っていたらすいません。
ブロックタグ
- Websites
- ウェブサイトの一覧を表示
- IfWebsite
- ウェブサイトのコンテキストであることを判定
- WebsiteIfCCLicense
- ウェブサイトのコンテキストでクリエイティブコモンズが指定されていることを判定
- WebsiteHasBlog
- ウェブサイトがブログを有することを判定
ファンクションタグ
- AuthorCommentCount
- ユーザーのコメント数
- AuthorEntriesCount
- ユーザーのブログ記事数
- AuthorEntryCount
- ユーザーの公開ブログ記事数
- BlogThemeID
- ブログのテーマID
- SupportDirectoryURL
- 環境変数SupportDirectoryURLの値を出力
- WebsiteID
- ウェブサイトのID
WebsiteLabelWebsiteName- ウェブサイトの名前(ベータ4からテンプレートタグ名称が変更されました)
- WebsiteDescription
- ウェブサイトの説明
- WebsiteLanguage
- ウェブサイトの言語
- WebsiteURL
- ウェブサイトURL
- WebsitePath
- ウェブサイトパス
- WebsiteTimezone
- ウェブサイトのタイムゾーン
- WebsiteCCLicenseURL
- ウェブサイトのクリエイティブコモンズライセンスURL
- WebsiteCCLicenseImage
- ウェブサイトのクリエイティブコモンズライセンス画像
- WebsiteFileExtension
- ウェブサイトのファイルの拡張子
- WebsiteHost
- ウェブサイトのホスト
- WebsiteRelativeURL
- ウェブサイトの相対URL
- WebsiteThemeID
- ウェブサイトのテーマID
- WebsiteCommentCount
- ウェブサイトへのコメント数
- WebsitePingCount
- ウェブサイトへのトラックバック数
- WebsitePageCount
- ウェブサイトのウェブページ数
6.管理画面
管理画面の変更点について、上記以外で気がついた点です。
システム管理画面の「設定」→「全般」で、MT4.3 で追加されたデバグモードやパフォーマンスログの設定項目が反映されています。
ロールに「ウェブマスター」が追加されてました。
フォルダの設定が、「アイテム」と「フォルダ」で分離されています。ただし、ベータ1のファイルアップロード画面のフォルダ選択で、混在して表示されます。

MT4 の「設定」→「コメント」「トラックバック」「スパム」が、MT5 では「設定」→「コミュニケーション」に統合されました。
ユーザー作成時のシステム権限に、「ウェブサイトの作成」が追加されました。

7.ツール
tools ディレクトリに以下のツールが追加されています。
- permission-viewer
- remove_old_sessions
- shell
8.その他
ウェブサイトのメインページや「最近のブログ記事」には、ブログのブログ記事も表示されます(逆にウェブサイトのウェブページは表示されません)。
下は「最近のブログ記事」ウィジェットですが、ウェブサイトにブログの情報を含むために include_blogs モディファイアを利用し、モディファイアの値に site を設定しているようです。他のテンプレートも同様です。
<mt:If tag="BlogEntryCount" include_blogs="site">
<mt:Entries lastn="10" include_blogs="site">
<mt:EntriesHeader>
<div class="widget-recent-entries widget-archives widget">
<h3 class="widget-header">最近のブログ記事</h3>
<div class="widget-content">
<ul>
</mt:EntriesHeader>
<li><a href="<$mt:EntryPermalink$>"><$mt:EntryTitle$></a> - <a href="<$mt:EntryBlogURL$>"><$mt:EntryBlogName$></a></li>
<mt:EntriesFooter>
</ul>
</div>
</div>
</mt:EntriesFooter>
</mt:Entries>
</mt:If>
なおベータ1では、ブログ記事を更新しても、ウェブサイトのメインページは更新されないようです。
また、デフォルトのウェブサイトからの検索は、ブログも検索結果に含まれるようになっています。下はウェブサイトの「検索」ウィジェットの抜粋ですが、青色の部分で制御しています。
<div class="widget-search widget">
<h3 class="widget-header">検索</h3>
<div class="widget-content">
<form method="get" action="<$mt:CGIPath$><$mt:SearchScript$>">
<input type="text" id="search" class="ti" name="search" value="<$mt:SearchString$>" />
<mt:If name="search_results">
<input type="hidden" name="IncludeBlogs" value="<$mt:SearchIncludeBlogs$>" />
<mt:Ignore>
<!-- use these options only with MT::App::Search::Legacy -->
<ul class="search-options">
<li><input type="checkbox" name="CaseSearch" /> 大文字/小文字を区別する</li>
<li><input type="checkbox" name="RegexSearch" /> 正規表現</li>
</ul>
</mt:Ignore>
<mt:Else>
<input type="hidden" name="IncludeBlogs" value="<$mt:WebsiteID$><mt:WebsiteHasBlog><mt:Blogs include_blogs="site">,<mt:BlogID></mt:Blogs></mt:WebsiteHasBlog>" />
</mt:If>
<input type="hidden" name="limit" value="<$mt:SearchMaxResults$>" />
<input type="submit" accesskey="4" value="検索" />
</form>
</div>
</div>
2009.09.03
7項を追加
Movable Type 5.0 ベータテスト開始
Movable Type 5.0 のベータテストが開始されました。

Movable Type 5.0 のベータテストを開始しました
本日より、Movable Type の新バージョン 5.0 の開発者向け公開ベータテストを開始しました。 Movable Type 5は、コンテンツとデザインを連携し、ウェブサイトの『テーマ(目的)』を最短距離で実現します。多くのノウハウが蓄積された強力なテンプレート言語と、カスタムフィールドなどのカスタマイズを組み合わせてテーマを作成、配布。また、ウェブサイト単位のコンテンツ管理や、更新履歴の保存など、CMSとしての基盤を熟成しています。個人のブログから、企業ホームページ、多数のメンバーで運営するソーシャル・メディアまで、大きく成長するウェブサイト運営を実現します。
ベータ版は以下のページからダウンロードできます。
とりあえず最初の画面はこんな感じです。

インストール後のダッシュボードです。

続報は追ってお知らせします。
Movable Type のページ分割でページ番号を title 要素に表示する
Movable Type の Paginate プラグインでページ分割を行っている場合に、title 要素や meta 要素に現在のページ番号を表示するカスタマイズです。
下のキャプチャ画面では「No.3」という表示が、現在のページ番号を示しています。

ご質問を頂きましたので本エントリーで情報展開致します。
1.失敗例
例えば、「既定のブログ」のメインページで、title 要素と meta 要素に以下のようなページ分割用のテンプレートタグを追加(青色部分)しても、ページ番号は表示されないようです。
なお、この場合、そもそものページ分割用のテンプレートタグは「メインページのページ分割 for Movable Type 4」にしたがって設定を行なっています(赤色部分)。
...前略...
<head>
<$mt:Include module="HTMLヘッダー"$>
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="<$mt:Link template="rsd"$>" />
<meta name="description" content="Foo No.<MTPaginate><$MTPaginateCurrentPage$></MTPaginate>" />
<title><$mt:BlogName encode_html="1"$> No.<MTPaginate><$MTPaginateCurrentPage$></MTPaginate></title>
</head>
...中略...
<MTPaginate>
<MTPaginateContent max_sections="5">
<MTEntries>
<$MTEntryTrackbackData$>
<$MTInclude module="ブログ記事の概要"$>
<$MTPaginateSectionBreak$>
</MTEntries>
</MTPaginateContent>
<MTPaginateIfMultiplePages>
<div class="paginate">
<MTPaginateIfPreviousPage_>
<a href="<$MTPaginatePreviousPageLink$>"><</a>
</MTPaginateIfPreviousPage_>
<$MTPaginateNavigator style="links" format_all="All pages" place_all="after" separator=" | ">
<MTPaginateIfNextPage_>
<a href="<$MTPaginateNextPageLink$>">></a>
</MTPaginateIfNextPage_>
</div>
</MTPaginateIfMultiplePages>
</MTPaginate>
...後略...
2.カスタマイズ
ページ番号を適正に表示するには、元のカスタマイズの MTPaginate タグの開始タグを削除し(赤色部分)、ページ番号を表示したい部分を含むような形で MTPaginate で括り直します(2行目
の青色部分)。また、title 要素や meta 要素に与えていた MTPaginate タグも不要になり、MTPaginateCurrentPage タグのみ与えます(青色部分)。
...前略...
<MTPaginate>
<head>
<$mt:Include module="HTMLヘッダー"$>
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="<$mt:Link template="rsd"$>" />
<meta name="description" content="Foo No.<$MTPaginateCurrentPage$>" />
<title><$mt:BlogName encode_html="1"$> No.<$MTPaginateCurrentPage$></title>
</head>
...中略...
<MTPaginate>
<MTPaginateContent max_sections="5">
<MTEntries>
<$MTEntryTrackbackData$>
<$MTInclude module="ブログ記事の概要"$>
<$MTPaginateSectionBreak$>
</MTEntries>
</MTPaginateContent>
<MTPaginateIfMultiplePages>
<div class="paginate">
<MTPaginateIfPreviousPage_>
<a href="<$MTPaginatePreviousPageLink$>"><</a>
</MTPaginateIfPreviousPage_>
<$MTPaginateNavigator style="links" format_all="All pages" place_all="after" separator=" | ">
<MTPaginateIfNextPage_>
<a href="<$MTPaginateNextPageLink$>">></a>
</MTPaginateIfNextPage_>
</div>
</MTPaginateIfMultiplePages>
</MTPaginate>
...後略...
言い換えると、テンプレート全体を MTPaginate タグで括っておき、本来分割したい箇所やページナビゲーションを行ないたい部分に、それらに対応したページ分割用のテンプレートタグを記述しておくとよいでしょう。
EditFieldController プラグイン
Category:[管理画面, 自作プラグイン]
Tag:[EditFieldController, MovableType, Plugin]
Permalink
Movable Type のブログ記事編集画面・ウェブページ編集画面のフィールドの表示・非表示を制御する、EditFieldController プラグインを公開します。
下の画像は、特定のユーザーがブログ記事を編集する場合に、タイトルフィールドを書き込み禁止にし、本文以外のフィールドを非表示にした例です。
デフォルト機能でもユーザー自身がフィールドの表示・非表示を変更できますが、このプラグインではシステム管理者がログインユーザー名でフィールドの表示・非表示を制御できる点が異なります。
つまり記事編集者が誤って別のフィールドを編集する行為を防止することを目的としたプラグインです。機能としてはまだまだ未完成なので、「こういう制御を行ないたい」という希望がありましたらご要望ください。今後はロール名でも制御できるようにする予定です。
1.機能
指定ユーザーに対し、以下のフィールドの表示(書込み禁止)や非表示が可能です。また、指定ユーザー以外のユーザーに適用することも可能です。
- タイトル
- 概要
- タグ
- キーワード
- 公開状態
- 公開日
- 出力ファイル名
- カテゴリ
- フォルダ
- 受信設定
- トラックバック送信先URL
- 削除ボタン
- 表示オプション
2.価格
本プラグインの価格は次の通りです。
- 個人ライセンス(無償):無償
- 上記以外の有償ライセンス:10000円/1サーバ
なお、個人ライセンスの方も、プラグインのご利用および質問に対する回答等について、ご支援・ご賛同くださる方からの寄付をお待ち申し上げます。
有償ライセンスでご利用の場合、プラグインの動作確認後、下記から指定の金額をお支払いください。お支払い後に不具合が発覚しても払い戻しは致しかねますのでご注意ください。なお、銀行振り込みをご希望の場合は、大変ご面倒ですが、お問い合わせからご連絡ください。折り返し振り込み口座をご連絡致します。
3.プラグインのダウンロード
下記のリンクからプラグインアーカイブをダウンロードし、任意のフォルダに保存してください。
変更履歴
2009.09.01 初版 2009.09.10 ロール名による制御の追加・システム管理者スキップ機能の追加
4.インストール
プラグインアーカイブを解凍し、中にある EditFieldController フォルダを plugins ディレクトリにアップロードしてください。
ブログ管理画面より「システム」→「プラグイン」でプラグイン一覧を表示し、次のように表示されればOKです。

5.プラグインの設定
ブログ管理画面(システム管理画面ではありません)の「ツール」→「プラグイン」でプラグイン一覧画面を表示し、「EditFieldController」→「設定」をクリックして、プラグインの設定を行ないます。
- システム管理者
- チェックすれば、システム管理者を処理対象外にします。
- 対象ユーザー名
- 処理対象(あるいは処理対象外)のユーザー名(ユーザーの表示名ではありません)を設定します。複数設定する場合は半角カンマで区切って記述します。
- 対象ロール名
- 処理対象(あるいは処理対象外)のロール名を設定します。複数設定する場合は半角カンマで区切って記述します。
- 処理方法
- 指定したユーザーを処理対象にする・しないを設定します。
- タイトル
- タイトルフィールドの表示を制御します
- 概要
- 概要フィールドの表示・非表示を制御します
- タグ
- タグフィールドの表示・非表示を制御します
- キーワード
- キーワードフィールドの表示・非表示を制御します
- 公開状態
- 公開状態の表示・非表示を制御します
- 公開日
- 公開日の表示・非表示を制御します
- 出力ファイル名
- 出力ファイル名の表示・非表示を制御します
- カテゴリ
- カテゴリフィールドの表示・非表示を制御します
- フォルダ
- フォルダフィールドの表示・非表示を制御します
- 受信設定
- 受信設定の表示・非表示を制御します
- トラックバック送信先URL
- トラックバック送信先URLの表示・非表示を制御します
- 削除ボタン
- 編集画面の「削除」ボタンの表示・非表示を制御します
- 表示オプション
- 「表示オプション」リンクの表示・非表示を制御します











このメールの例えは素晴らしい
期待していたのですが。
売れている様なので
"学"ではない。
読んで良かった...


