Movable Type 技術情報
ぴろり上西
2008年10月15日
バージョンアップという単語を見るとdiffの使用率が一気に上がります。こんにちは。上西です。
MovableType4.22が出ましたね。告知の方では管理画面のXSS脆弱性への対応とありますが、ソースコードの差分を取ってみると色々と修正されていることがわかります。XSS脆弱性外のところは何れもそれほど大きな修正ではないのですが、今までMTの不思議な挙動に「?」マークを出していた人にはバージョンアップをお勧めします。
ソースコードを読んでいて気がついた点を簡単にメモしておきます。
- スキーマバージョンに変更なし。データベースに変更はされませんが、作業前のバックアップは忘れずに行っておきましょう。
- tmpl/cms/* に幾つか修正があります。主には escape="html" が追加されてHTMLの脆弱性が解消されています。
- データインポート時のHTML脆弱性が対策されています。
- 「test for global-level permission」 何でしょうね?これ。広域レベルの承認のためのテストと読めますが、今後に出る新しいフィーチャーの実験コードでしょうか?
- Tag の読み込みに iterator を使うようになっています。同じ動作をするはずなのですが、何でしょう?
- アップグレード時にビルド方式が適切に設定されなかった不具合が修正されています。
- Upgrade.pm がけっこう変っています。アップグレードがうまくいかなくて困っているユーザを見かけたことがあるのでその対策でしょうか?
- 数字が要求されているところに数字以外が来たら?だとか必須と想定しているパラメータが無かったら?のような回避コードが幾つも追加されていて安定性が向上しています。
- Tag の読み出し部分の変更。日本語のタグが重複して現れる不具合が解消されているかもしれません。
ここまでシステムが巨大化すると互いが互いに色々と影響をするので、勘違いしているところがあるかもしれません。短い時間ではなかなか細かいところまで把握しきれません。変更点を全部追いかけるとなると一日じゃ終わらない!
お客様には安定してシステムを使って頂けるよう弊社一丸となって頑張って参ります。今後ともよろしくお願いいたします。
小林
2008年10月07日
Movable Type 4には残念ながらテンプレートのバージョン管理機能はついていません。ですのでうっかりミスでテンプレートを間違って保存したりすると大変なことになります。
ちなみに私は先日このプラグインのおかげで涙を流さずにすみました・・・
というプラグインは、先日ご紹介しましたテンプレートの履歴管理プラグイン「RevisionControl」です。

このようにテンプレート毎に履歴を保存することが出来ますので、間違って編集してもあわてることはありません。履歴からリンクをクリックするとすぐ復旧することが出来ます。しかもコメントも残せますので、コメントをきちっと残しておけばどの履歴に戻ればいいかわかるようになります。
ですが、この履歴管理は簡単ですが欠点もあります。
- あやまって削除した場合、対処のしようがない
- 複数人数で編集する場合、差分管理が出来ない
この欠点を防ぐには面倒ですがSubversionなどのバージョン管理ツールを使うしかありません。Subversionをうまく運用できれば、削除しても復元できますし、更新の差分も保存できます。
MTでのSubversionの利用はこちらが詳しいです。参考にしてみてください。
Movable Typeのテンプレートをバージョン管理する
また、こちらではSubversionではなくテンプレートセットをうまく使ってバージョン管理する方法をご説明されております。
Movable Type のテンプレートをカスタマイズするときのバージョン管理 - かたつむりくんのWWW
個人ベース、もしくは少人数での運用であれば、RevisionControlプラグインは簡易バージョン管理ツールとして大きな威力を発揮すると思います。ぜひ一度ご活用ください。
小林
2008年10月06日
小林です。
Movable Type 4からカスタムフィールド機能が追加され、ウェブページやエントリーにフィールドを追加することができるようになりました。
カスタムフィールドではテキストやアイテムなどのフィールドを拡張することができるようになり、今回はそのアイテムを利用したアイデアをご紹介いたします。
まずは動作を確認してください。このサイトでは導入事例にサムネイルを付与していまして、検索結果にサムネイルを表示させています。
検索サムネイル一覧のサンプル
また、検索結果以外にも、導入事例一覧にはサムネイルを表示しています。
導入事例サムネイル一覧のサンプル
一覧にサムネイルが添付されると見やすくていいですよね。
というわけでやり方を。ここではウェブページを使って、実際にスカイアークのWEBサイトでやっているものをお見せいたします。
まずカスタムフィールドで「サムネイル」というフィールドを作ります。そしてフィールドの設定は下記のように設定します。

テンプレートタグ名は任意です。ここではMTPageThumbnailとなるように記入しました。これで準備は完了です。実際にサムネイルを登録します。
ウェブページの作成画面に移動すると、サムネイルという項目が追加されていると思います。(見えない場合は右上の表示オプションをクリックしてサムネイルという項目を選択してください。)
サムネイルに任意の画像を選択します。「画像の選択」をクリックして画像をアップロードして設定すると下記のようになります。

これでページの設定は完了です。
そして今度はサムネイルを出力させるためのテンプレートを設定します。ここではdlタグで一覧を出力するやり方をご紹介いたします。
<dl>
<MTPages>
<dt><a href="<$MTPagePermaLink$>"><$MTPageTitle$></a></dt>
<dd>
<p>
<MTPageThumbnailAsset>
<a href="<$MTPagePermaLink$>"><img src="<$MTAssetThumbnailURL width="100"$>" alt="<$MTPageTitle$>" /></a>
</MTPageThumbnailAsset>
<$MTPageExcerpt$>
</p>
<ul>
<MTPageTags>
<li><a href="<$MTTagSearchLink$>"><$MTTagName$></a></li>
</MTPageTags>
</ul>
</dd>
</MTPages>
</dl>
ここではMTPageThumbnailAssetというタグを利用しています。「MTカスタムフィールドで指定した値Asset」とするとカスタムフィールドで指定したアセットを呼び出してくることが出来ます。あとはMTAssetThumbnailURLでサムネイルを呼び出せばOK。ここでは幅100に指定しています。このやり方だとサムネイルがない場合はタグがそもそも出ませんので、サムネイルを登録していない場合は何も出ません。ここれではサムネイルと同時に概要(MTPageExcerpt)とそのウェブページに所属しているタグの一覧も出力しています。
さて、実際にタグを入れたページを再構築するとどうなるでしょう。このタグはこのページから持ってきましたので、このページで使われているMTタグと一緒です。
イントラWEB構築事例 | スカイアークシステム

このように、カスタムフィールドをうまく活用すると、テキストばかりのウェブサイトから脱却できて、より閲覧者の方が使いやすいウェブサイトを作ることが出来ます。
これを参考にしていろいろとチャレンジしてみてください。
小林
2008年10月03日
スカイアーク社内にはXHTMLとCSSのコーディングガイドラインがあります。MTは特にHTMLに触れる機会が多いので、全員が同じ品質でHTMLを書くためには必要になります。
このガイドラインの特徴は以下です。
- ガイドラインを順守すればCSSハックなどを使わなくてもモダンブラウザに対応できる(バグ回避がガイドラインになっている)
- ID・Class名のつけ方はあらかじめ決まっているので、名前を考える手間が省ける
- HTMLのソースコード量を削減できる(ただ、ページ数が多くなる場合、CSSが肥大化してClass管理が大変になるデメリットもあります)
参考までに2ページほどお見せします。ここ間違ってるよ、などのアドバイスがありましたらトラックバックいただければ幸いです。
(印刷の関係でセルが途切れていますね・・・あくまで参考なのでそのまま公開しました笑)
スカイアークのコーディングガイドラインの一部(参考までに)
この他にもID・Class名ガイドライン、ファイル名ガイドラインがあります。たとえばガイドラインには、
- 注釈=note
- パンくずリスト=topicPath
- ~の詳細=detail
など、言葉とclass名がセットになって記載されています。
私たちのガイドラインはまだまだ改善の余地がありますが、大切なのはプロジェクト後に反省を行って、苦労したことや良かったことなどをガイドラインにアップデートしていくことですね。私たちも実務に追われてそのようなことが忘れがちになることがあるので、自戒の意味も込めてここに書きました。
参考になれば幸いです。
方川
2008年08月01日
こんにちは 方川です。
今回紹介するプラグインはMovable Typeで生成するhtmlを静的にページ分割してくれるプラグインのバージョンアップ版です。
今回のバージョンアップにより以前まで固定だったナビゲーションのリンク数を
設定できようになりました。MTPageContentsタグにnavi_count属性を指定してリンク数を設定するだけです。(PageButeの使い方についてはこちらを参照)
例 6件表示の場合
<MTPageContents count="1" navi_count="6"> ~ </MTPageContents>
上記navi_count="6"の指定により下図で表す通りのページリンクが6件表示になります。

例 指定しない場合
<MTPageContents count="1"> ~ </MTPageContents>
上記指定無しの場合は、11件表示になります。

注意事項
本プラグインをご利用される方は必ず「プラグインご利用の際の注意事項」をお読みください。