2010年4月22日

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件追加されます。このデータはテンプレートの保存時に追加されます。

mt_fileinfoテーブル

3.公開プロファイルでダイナミックパブリッシングを選択する

次に、公開プロファイルでダイナミックダイナミックパブリッシングを選択してみます。

公開プロファイルの選択

この後、選択したプロファイルを実行すると、「ダイナミックリンクを再構築中」という聞きなれない単語が表示されます。

ダイナミックリンクを再構築中

完了後、mt_fileinfoテーブルを参照すると、すべてのページに対するオブジェクトデータが生成されていることが分かります。つまり「ダイナミックリンク」とは、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項)
Comments [0] | Trackbacks [0]
2010年4月21日

ダイナミックパブリッシングでURLが重複する事象について

Movable Type 5 プロフェッショナルガイド」を執筆している最中に気がついたのですが、ツールのインポート機能を利用して、インポートしたブログ記事をダイナミックパブリッシングで表示すると、期待通りの出力にならないという事象が発生しました。

1.問題

具体的には、MTEntryPermalinkタグやMTArchiveLinkタグの出力が、他のブログ記事やアーカイブページのURLと重複するという事象になりました。

2.原因

ダイナミックパブリッシング設定後、テンプレートの再構築を行っていなかったためと思われます。なお、ダイナミックパブリッシングの設定は「公開プロファイル」ではなく、特定のインデックステンプレートだけに適用しました。

3.対処

テンプレートの再構築を行うことで適正なURLが出力されるようになりました。インポートしたデータをダイナミックパブリッシングで適正な内容を表示するには、一旦各テンプレートの再構築を行わないといけないようです。

以下推測です(認識誤りでしたらご指摘ください)が、ダイナミックパブリッシングでは、FileInfoという、URLとファイルをマッピングするテーブルが利用されます。今回の事象では、このテーブルが生成されていなかったのが原因かもしれません。

Movable Type オブジェクト・リファレンス - MT::FileInfo
Comments [0] | Trackbacks [0]
Now loading...
ギターに入った猫
掲載広告募集
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner


AMN
Categories
Monthly Archives
2017年
2016年
2015年
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
2005年
2004年
2003年
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
Powered by
Movable Type 6.0.3