エントリー内の本文部分のみ、スタティックにして、他のアーカイブで読み込めば、プラグインの改行設定でも大丈夫ですよ。
でもうまくいかなかったのですが、代りにMTの動作が”とても”早くなるという思わぬ収穫があったので、それも併せてメモです。
PHP化を施して、アーカイブに共通のエントリー内容を表示させてる場合はやってみると良いかもです。
概要
私のサイトの場合はちょっと違うので、ここではエントリー・アーカイブとカテゴリー・アーカイブを例に用いてみます。
カテゴリー・アーカイブの場合は、エントリーの「<$MTEntryBody$>を表示させて、エントリー・アーカイブには「<$MTEntryBody$>+<$MTEntryMore$>」という形が少なくないのではないでしょうか。つまり、
- エントリー・アーカイブの<$MTEntryBody$>
- カテゴリー・アーカイブの<$MTEntryBody$>
は共通なワケです。そして、貰ったアドバイスと併せて考えると、
「<$MTEntryBody$>を(スタティック)ファイルとして作って、それを両アーカイブで読み込ませると良いかも」
となるのです。これならダイナミック・パブリッシングでも大丈夫かもしれない!?だってPHPのReadfile関数は動いてるから!!やったー!
アーカイブの作成
上記を実現する為に、スタティックなアーカイブファイルを出力させて、読み込ませるようにしてみます。
「テンプレート→アーカイブ→テンプレートを新規作成」
- テンプレート名・・・EntryBody
- 内容・・・<$MTEntryBody$> とだけ記述
次に「設定→公開→アーカイブ・マッピング」と進みます。「マッピングを新規作成」。
- アーカイブの種類・・・エントリー
- テンプレート・・・先程作成した「EntryBody」
上記で生成されるファイルの出力フォーマットはそれぞれだとは思いますが、ここではエントリー・アーカイブと同階層に生成されるように設定してみます。そして、別ファイルになるように名前を変えてあげます。
これで、<$MTEntryBody$>の内容はエントリー・アーカイブと同階層に、異なるファイル名で生成される事になります。よって、個別アーカイブとカテゴリー・アーカイブで表示させている「<$MTEntryBody$>」は、このファイルを共通して利用する事が出来ます。
アーカイブでの読み込ませ方
<$MTEntryBody$>をそれぞれのアーカイブで読み込ませるようにします。今まで<$MTEntryBody$>を書いていたのを削除して、以下のように変更します。アーカイブ用のディレクトリを使用してるので、ArchiveURLを書いてますが、これを利用してない場合は適宜置き換えてから。
●エントリー・アーカイブ,カテゴリー・アーカイブに以下を記述
ここでちょっと注意するのは、マッピングで書いた書式と、Date formatを用いての書式が多少異なる点です。
2桁表示の際に、ゼロをつけるかつけないかとか、時間は24時間表記なのかといった点で変ってくると思うので、その辺りを確認しつつやって行きましょう。
- マッピングでの書式・・・%y/%m/%d%h%n%s_body.php
- アーカイブでの書式・・・<$MTArchiveDate format="%Y/%m/%d%H%M%S"$>_body.php
上記は「年・月・日時分秒」として出力してる例です。
これで、どこのアーカイブでもスタティックとして生成している「<$MTEntryBody$>ファイル」を使う事が出来ます。
XSASの場合ではちょっとだけ書式が変ってくるのですが、基本的には同じなので省略。
再構築して、エントリー・アーカイブでもカテゴリー・アーカイブでも、同様の<$MTEntryBody$>が表示されます。
ここまでが「動作が早くなる収穫」です。月別やカテゴリー・アーカイブでも<$MTEntryBody$>を記述して再構築したりしてみたのですが、上記までの方法を用いると、結局<$MTEntryBody$>は1回の構築で済んでしまうので、それぞれのアーカイブに<$MTEntryBody$>をそのまま記述するよりさっぱり早いです。
ダイナミック・パブリッシングしてるページでファイルを読み込む
ここが肝心のところなのですが、出来ないでいます。
ダイナミック状態のページでは、MTArchiveDate formatがきちんと作用しないみたいで、そのため、ファイルの読み込みまでのパス指定がうまく行かず。。。さてどうしたものか。
ダイナミックの知識を増やして、そのうち改めて挑戦ですね。
あとがき
あとちょっと・・・というのが現状かな。もうひとひねりで出来そうな感じがしないでもないんですけど。スタティックな時と同じ状態まで持っていけるのは、まだまだ先みたいです。他にも問題は溜ってるし。
で、ようやくアーカイブ・マッピングについて役割というか、動作の意味合いが判って来た感じです。これを利用する事で、何か面白い事は出来ないかな?出来たら良いけど
・・・(・ω・)フゥ
おっ、徐々に前に行ってますね。
そうなんですよ。ボディ部は共通にして読み込んだ方が、再構築が早くなるんです。
それで、ダイナミックパブリッシングで読み込む方法なのですが、ここでSmartyのコードが登場します。
私の場合はMTIncludeを使ってfileで読み込んでます。
SmartyでMTタグの値を渡す方法については、「WingMemo」でTAEKOさんが色々解説して下さってます。ページ分割のエントリー見ると、どうすれば良いか解ると思いますよ。
ほんと、少しずつって感じですけど(・ω・)ゞ
言葉足らずですけど、なんかボディ部分って絶対書いておかなくちゃ、っていう脅迫観念みたいなものに囚われてんですね。
なのでちょっと面白い発見でした。
次はSmartyですか。うーむ・・・コード関係は弱いのに!!(笑
でも面白そうだからアドバイスをもとに探ってみます。
毎回ありがとうございます_(..)_
MTIncludeもやってはみたんですけどダメだったんですよね。
きっとパスの書き方を間違ったのかな・・・またやってみます。