ダイナミック・パブリッシングで改行処理プラグインを有効に使えるよう頑張ってみる-でもダメな件

ドバイスを貰ったので、これをもとにやってみました。

エントリー内の本文部分のみ、スタティックにして、他のアーカイブで読み込めば、プラグインの改行設定でも大丈夫ですよ。

でもうまくいかなかったのですが、代りに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がきちんと作用しないみたいで、そのため、ファイルの読み込みまでのパス指定がうまく行かず。。。さてどうしたものか。
ダイナミックの知識を増やして、そのうち改めて挑戦ですね。

あとがき

あとちょっと・・・というのが現状かな。もうひとひねりで出来そうな感じがしないでもないんですけど。スタティックな時と同じ状態まで持っていけるのは、まだまだ先みたいです。他にも問題は溜ってるし。
で、ようやくアーカイブ・マッピングについて役割というか、動作の意味合いが判って来た感じです。これを利用する事で、何か面白い事は出来ないかな?出来たら良いけど


・・・(・ω・)フゥ

▲ to Top

コメント(2)

おっ、徐々に前に行ってますね。
そうなんですよ。ボディ部は共通にして読み込んだ方が、再構築が早くなるんです。
それで、ダイナミックパブリッシングで読み込む方法なのですが、ここでSmartyのコードが登場します。
私の場合はMTIncludeを使ってfileで読み込んでます。
SmartyでMTタグの値を渡す方法については、「WingMemo」でTAEKOさんが色々解説して下さってます。ページ分割のエントリー見ると、どうすれば良いか解ると思いますよ。

ほんと、少しずつって感じですけど(・ω・)ゞ
言葉足らずですけど、なんかボディ部分って絶対書いておかなくちゃ、っていう脅迫観念みたいなものに囚われてんですね。
なのでちょっと面白い発見でした。


次はSmartyですか。うーむ・・・コード関係は弱いのに!!(笑
でも面白そうだからアドバイスをもとに探ってみます。
毎回ありがとうございます_(..)_


MTIncludeもやってはみたんですけどダメだったんですよね。
きっとパスの書き方を間違ったのかな・・・またやってみます。

トラックバック(0)

▲ to Top