MTのウェブページ/記事のプレビュー画面を別画面で出す
プレビュー画面の遷移がいちいちめんどくさい
前から思っていたのですが、MTのプレビュー画面は、
編集画面 ➡ プレビュー画面 ➡ 編集画面
次のような形で遷移する為、
一旦プレビュー画面を出した後で、編集を続ける場合、
特にプレビューを何回も繰り返す場合は、
プレビュー画面から編集画面に戻る手間がいちいち編集が面倒だ、
と感じていました。
今回は、これを解消する為、
プレビュー画面を編集画面とは別ウインドウで表示する手法を紹介します。
MT6以降は、環境変数の設定で、別画面でのプレビューが可能
MT6 より、別画面でプレビューを行う為の環境変数 PreviewInNewWindow が追加されました。
これは簡単で便利ですね。
MT5以下では、有志のプラグインを利用
MT5以下で対応する際は、荒木 勇次郎 氏が「PreviewTargetChanger」というプラグインを公開されており、これで対応する事ができます。
http://www.koikikukan.com/archives/2010/12/27-015555.php
※但し、商用利用は有償です。
プレビューファイルがゴミとして残る場合への対応
MT6の PreviewInNewWindowの場合
MT6の PreviewInNewWindow が有効な場合、一度作成したプレビューファイルは、
デフォルトのままでは自動的に消されません。
公式のドキュメントでは、run_periodic_tasks を実行して消すように、とあるので、
cronで定期的にrun_periodic_tasksを実行して、
プレビューファイルを消させる事を想定しているように見えます。
http://www.movabletype.jp/documentation/appendices/config-directives/previewinnewwindow.html
PreviewTargetChangerの場合
本プラグインはプレビューファイルを消す為の実装が含まれていません。
なので、こちらもプレビューファイルを定期的に削除するスクリプトを自作してcronで定期的に実行して消す、
といった対応が必要になります。
削除スクリプトがシェルスクリプトの場合は、次のような感じでしょうか。
cd [MTの静的ファイル出力先であるウェブサイトのルートディレクトリ]
find . -regex ".*mt-preview-[a-z0-9]+\.html" -type f -delete
cronが使えないとか、ファイルを消す権限が無いとき
プレビューファイルが消せない場合に想定される問題として、
googleやNamazuなど検索エンジンに引っかかるなどして、外に見えてしまう事が考慮されます。
この場合、MTテンプレートにて予約変数 preview_template を利用して、
preview_template が 1 のときは、ロボット対策のコードを入れて
検索エンジンに引っかからないようにするのが対策の一つとして考えられます。
<mt:if name="preview_template" eq="1">
<meta name="robots" content="noindex,nofollow" />
</mt:if>
また同様の手順で、プレビューファイルに、
Googleアナリティクスコードなどプレビューファイルに出力するのが不適当なソースを出力させないようにしておく事が考えられます。