Help us understand the problem. What is going on with this article?

Movable Typeの罠

More than 5 years have passed since last update.

Movable Type Advent Calendar 2012の21日目の記事として、私がMovable Typeを使っていて嵌った数々の罠の内、いくつかをご紹介します。すべて2012年12月21日時点での最新版であるMovable Type 5.2.2にも潜んでいるものです。

サーバー側でスケジュールタスクを実行するための設定をしないと、ブログ記事/ウェブページを日時指定で公開できない

私がMovable Typeを使い始めた頃に嵌った罠です。

「日時指定で公開できるのか、そりゃ便利だ」と思ってその機能を使ってみたものの、指定した日時になっても公開されなくて戸惑いました。

「日時指定」投稿を行うには、事前にサーバー側でスケジュールタスクを実行するための設定が必要です。...

――「日時指定」が動作しない | Movable Type FAQ

ってことなんですけれども、それならオプション機能にすべきなんじゃないかな。

ブログ記事とウェブページは自動的に再構築されない

これも使い始めた頃に嵌りました。

ブログ記事/ウェブページを公開したり削除したときに、そのブログ記事/ウェブページが属するアーカイブのページやインデックスページは再構築されますが、すべてのブログ記事/ウェブページが再構築されることはありません。(公開/削除されたブログ記事/ウェブページの公開日順で前後のブログ記事/ウェブページは再構築されますが、それ以外のブログ記事/ウェブページは再構築されません。)

最近更新されたページの一覧を全ページに表示させるというよくありがちなことをする場合、その一覧をインデックステンプレートで吐き出してPHPでインクルードするような細工をしないと、ブログ記事/ウェブページを公開したり削除したりする度に、手動で全体の再構築をする羽目になります。

プレビュー時の一時ファイルが残りやすい

皆が言う、Movable Typeはごみが残りやすいと。以前は、ブログ記事/ウェブページのカテゴリ/フォルダを変更すると変更前のカテゴリ/フォルダにページが残る問題があったのですが、それは5.2.2で修正されました。

以下の問題点が修正されました。

104094 公開されているウェブページのフォルダを変更した際、変更前のフォルダにファイルが残る

――5.2.2 リリースノート : Movable Type 5 ドキュメント

でも、プレビューしたときの一時ファイルが残りやすい問題が残されています。

Movable Typeでは、ページ等のプレビューを行う際に、プレビュー用にページを再構築して、「mt-preview-XXX・・・」のようなファイル名でサーバーに保存するようになっています。
そして、プレビューの画面で「このブログ記事を保存する」等のボタンをクリックすると、プレビューのファイルが削除されます。

ただ、プレビューの際に、Webブラウザの戻るボタンを使う方もいます。
しかし、Webブラウザの戻るボタンがクリックされると、そのことがサーバーには伝わらないため、プレビューのファイルがサーバーに残ったままになってしまいます。

――プレビュー時にできるファイルを定期的に自動削除する - The blog of H.Fujimoto

この問題を解決するには、H.Fujimoto氏の記事にあるように、cronでファイルを定期的に削除するのがよさそうです。

ブログ記事/ウェブページのプレビュー時の一時ファイルの拡張子が、強制的に「アーカイブ設定」の「ファイルの拡張子」で設定されているものになってしまう

例えば、ウェブページだけをPHPで、それ以外のページはHTMLで公開しようと思ったとしましょう。そういうわけで「アーカイブ設定」の「ファイルの拡張子」をhtmlにしたままで、ウェブページテンプレートのアーカイブパスを%c/%b.phpにしました。その状態でウェブページにPHPのコードを書いてプレビューしてみます。PHPが動かない。なぜかと思って調べてみると、プレビュー用の一時ファイルの拡張子がhtmlになっているわけです。(公開したファイルはちゃんと拡張子がphpになりますけどね。)

こんな問題があるので、ブログ記事テンプレートとウェブページテンプレートの拡張子は「アーカイブ設定」の「ファイルの拡張子」で設定されているもの以外にしない方がよいでしょう。

一覧ページのプレビューができない

ブログ記事/ウェブページの編集画面でプレビューできるのは、個別ページのみです。ブログ記事/ウェブページの公開前に、一覧ページにどのように出るのかを目で見て確かめることはできません。

個別ページを持たず、一覧ページだけというのあれば、やりようによってはできなくもないです。「なかなか奥が深そうなMTのプレビュー機能」でその方法が紹介されています。でも、読むとげんなりします。(記事自体にではないですよ。)本当にそうするしかないのかと。

先の記事では「奥が深そう」とまろやかな表現をされていますが、Movable Typeのプレビュー機能がイケてないだけではなかろうか。本気で奥が深いと思い出したら、それは「奥が深い症候群」だと思いますよ。

種類が「URL」のカスタムフィールドに相対URLを入れて保存できない

種類が「URL」のカスタムフィールドにfoo.html/foo/bar.htmlの様な相対URLを入れて保存しようとすると、「URLを入力してください」というエラーが出て保存できません。どうやら種類が「URL」のカスタムフィールドに記入できるのは、完全なURLのみのようです。

完全なURLだけじゃなく相対URLも受け入れられるカスタムフィールドを作りたいなら、種類を「URL」ではなく「テキスト」にしなければなりません。

関連ページ

カスタムフィールドが検索対象にならない

カスタムフィールドに記入して保存した内容を、Movable Typeの管理側と公開側のどちらの検索機能を使っても見つけることはできません。

私の調べた限りだと、Movable Typeの検索機能で対象となるブログ記事/ウェブページの項目、ならないブログ記事/ウェブページの項目は次の通りです。

対象となるブログ記事/ウェブページの項目 対象とならないブログ記事/ウェブページの項目
管理側の検索機能 タイトル、本文、続き、概要、キーワード、出力ファイル名 タグ(※)、カスタムフィールド
公開側の検索機能 タイトル、本文、続き、キーワード タグ(※)、概要、出力ファイル名、カスタムフィールド

※管理側では「フィルタ」の機能を使うことで、ブログ記事/ウェブページをタグで絞り込むことが可能です。また、公開側の検索機能ではタグ用のパラメータを使うことで、タグでブログ記事/ウェブページを絞り込むことが可能です。

関連ページ

インデックステンプレートの出力ファイル名にテンプレートタグが使えない

アーカイブテンプレートのアーカイブパスにはテンプレートタグが使えます。

[パス] ではアーカイブページが出力される場所と、ファイル名のフォーマットを設定します。パスの設定はアーカイブマッピングで利用するアーカイブファイル名の定義で解説している記述方法のほか、MT タグの利用も可能です。Movable Type ではインストール時より、ファイルパスの一般的な例を登録していますが、自由にカスタマイズすることもできます。

――アーカイブマッピングの設定 : Movable Type 5 ドキュメント

それと同様にインデックステンプレートの出力ファイル名にもテンプレートタグが使えるんじゃないか?と期待したのですが、無理でした。インデックステンプレートの出力ファイル名にもテンプレートタグを使っても、それが処理されずに、そのままの文字列として出力ファイル名の一部になってしまいます。

出力ファイル名を<$mt:Date format="%Y%m%d%H%M%S"$>.txtにして再構築日時のファイル名でファイルを作ろうとした私は企ては失敗しました。

グローバルテンプレートの更新履歴が記録されない

Movable Typeはバージョン5で更新履歴という機能が実装されました。

更新履歴とは

ブログ記事、ウェブページ、テンプレートの更新履歴を管理します。いつ、誰が、どのような変更を加えたのかをリストで確認し、必要に応じて、過去のバージョンから内容を復元できます。更新履歴によって、複数のメンバーでのウェブサイト運営を、安心しておこなえます。

――更新履歴の保存と復元 (ブログ記事,ウェブページ,テンプレート) : Movable Type 5 ドキュメント

しかし、なぜかグローバルテンプレートはその機能の対象外になっているようです。


上:ウェブサイトのテンプレート。「ステータス」のエリアに「更新履歴を表示」とあり、そこから過去の状態を復元できる。
右:グローバルテンプレート。「ステータス」のエリアがない。

つまり、グローバルテンプレートは間違って上書きしてしまっても元に戻せないといことです。そんなことを知らなかった私は、グローバルテンプレートを前の状態に戻そうとしてできないことに気づいた時に、かなり焦りました。

グローバルテンプレートを編集する前には必ずバックアップを取るのがよいでしょう。

関連ページ

文字数制限

ブログ記事/ウェブページのタイトルは255文字まで、カテゴリのラベルは100文字までしか保存できません。

その他の項目の文字数制限は、参考ページによく纏まっています。

参考ページ

ブログ記事/ウェブページを削除した時に再構築トリガーが引かれない

詳しくは参考ページを。

参考ページ

最後に

いろいろ書きましたけど、MTは好きですよ、マジで。開発者の皆さんには本当に頭が下がります。

--

#swfkwdoesg,2012

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした