MT::FileInfoについて
昨日の「ダイナミックパブリッシングでURLが重複する事象について」の続きで、ダイナミックパブリッシングの設定方法の違いによるMT::FileInfoの状態などを簡単に調べてみました。
1.前準備
ブログ記事は次のものが投稿済みです。
- モバイルサイトオープン
- 業務提携に関するお知らせ
- ソリューションセミナー
- Movable Type 入門セミナー
- オフィシャルサイトオープン
- Movable Type 4 へようこそ!
- シンポジウム2010
- ホームページリニューアル
この状態で、phpMyAdminを使って、MT::FileInfo(mt_fileinfoテーブル)のオブジェクトデータを削除しておきます。
2.インデックステンプレートを個別にダイナミックパブリッシングにする
次のサブテンプレートを記述した、ダイナミックパブリッシングのインデックステンプレートを作成します。
<mt:Entries>
<mt:EntriesHeader>
<ul>
</mt:EntriesHeader>
<li><a href="<mt:EntryPermalink />"><mt:EntryTitle /></a></li>
<mt:EntriesFooter>
</ul>
</mt:EntriesFooter>
</mt:Entries>
このインデックステンプレートで作成したページにアクセスすると、ソースコードは次のようになりました。MTEntryTitleタグは評価されていますが、MTEntryPermalinkタグがまったく評価されていないことが分かります。
<ul>
<li><a href="">モバイルサイトオープン</a></li>
<li><a href="">業務提携に関するお知らせ</a></li>
<li><a href="">ソリューションセミナー</a></li>
<li><a href="">Movable Type 入門セミナー</a></li>
<li><a href="">オフィシャルサイトオープン</a></li>
<li><a href="">Movable Type 4 へようこそ!</a></li>
<li><a href="">シンポジウム2010</a></li>
<li><a href="">ホームページリニューアル</a></li>
</ul>
そしてmt_fileinfoテーブルには、このインデックステンプレートのオブジェクトデータが1件追加されます。このデータはテンプレートの保存時に追加されます。
3.公開プロファイルでダイナミックパブリッシングを選択する
次に、公開プロファイルでダイナミックダイナミックパブリッシングを選択してみます。
この後、選択したプロファイルを実行すると、「ダイナミックリンクを再構築中」という聞きなれない単語が表示されます。
完了後、mt_fileinfoテーブルを参照すると、すべてのページに対するオブジェクトデータが生成されていることが分かります。つまり「ダイナミックリンク」とは、mt_fileinfoテーブルへのオブジェクトデータ追加、つまりダイナミックパブリッシングで生成したページにアクセスできる状態を指すようです。
この状態で2項のページにアクセスすると、冒頭のMTEntryPermalinkタグも評価されました。
<ul>
<li><a href="http://user-domain/2010/09/post-9.html">モバイルサイトオープン</a></li>
<li><a href="http://user-domain/2010/08/post-8.html">業務提携に関するお知らせ</a></li>
<li><a href="http://user-domain/2010/07/java.html">ソリューションセミナー</a></li>
<li><a href="http://user-domain/2010/06/movable-type.html">Movable Type 入門セミナー</a></li>
<li><a href="http://user-domain/2010/05/post-1.html">オフィシャルサイトオープン</a></li>
<li><a href="http://user-domain/2010/05/movable-type-4.html">Movable Type 4 へようこそ!</a></li>
<li><a href="http://user-domain/2010/04/2010.html">シンポジウム2010</a></li>
<li><a href="http://user-domain/2010/03/post.html">ホームページリニューアル</a></li>
</ul>
4.mt_fileinfoテーブルのオブジェクトデータがない場合
ちなみに、再度mt_fileinfoテーブルのオブジェクトデータをすべて削除して、2項のページにアクセスすると、次のようなエラーになりました。
5.まとめ
ページアクセス時の動作は次のとおりです。
- MT::FileInfoオブジェクトあり:オブジェクトに対応するページは表示される(2項)。ただしMT::FileInfoオブジェクトの生成状態によっては正常に評価されないテンプレートタグあり。
- MT::FileInfoオブジェクトなし:ダイナミックパブリッシングエラー(4項)
また、ダイナミックパブリッシングの設定方法によるMT::FileInfoオブジェクトの生成範囲は次の通りです。
- 個別にダイナミックパブリッシングを設定:該当のテンプレートから生成されるページのMT::FileInfoオブジェクトを生成(2項)
- 公開プロファイルで設定:すべてのページのMT::FileInfoオブジェクトを生成(3項)
- Movable Typeのダイナミックパブリッシングで「An error occurs.」になる場合の対処
- さくらインターネットで Movable Type のダイナミックパブリッシングによる500エラーを確実に解消する方法
- ダイナミック・パブリッシングで perl のプラグインを利用する
- Movable Type の再構築を不要にする「ダイナミック・パブリッシング」(その2:設定方法)
- Movable Type の再構築を不要にする「ダイナミック・パブリッシング」(その1:概要)