# DynamicPreviewプラグイン

## はじめに

DynamicPreviewプラグインは、記事／ページ／テンプレート／コンテンツデータのプレビュー時に、一時ファイルを生成することなく、動的にコンテンツを生成、閲覧することを可能にします。

プレビュー画面で、「この記事を公開する」あるいは「この記事を編集する」ボタンを押下せず、ブラウザの「戻る」ボタンによって編集画面に戻ったり、プレビュー画面を開いたままブラウザを閉じてしまった場合、プレビュー用の一時ファイルが残ってしまいます。通常、残ってしまった一時ファイルは、次回プレビュー時に正しい操作を行うか、スケジュールタスクによって削除されますが、スケジュールタスクが設定されていない場合には、いつまでも残ってしまうことになります。このプラグインを導入する事で、そうした環境でも不要なファイルの生成を防ぐ事が可能になります。

その他に以下の機能があります。

SSI Include Virtual機能
  ApacheのSSI Include Virtual機能をシミュレートします。
ベースURL設定機能（Pro版のみ）
  URLの相対パスをサポートするために、<base>タグを挿入します。
URL置換機能（Pro版のみ）
  ドキュメント内のURLを置換します。
文字列置換機能（Pro版のみ）
  ドキュメント内の任意の文字列を置換します。
インデックス／アーカイブテンプレートプレビュー機能
  記事のプレビュー時に指定したインデックス／アーカイブテンプレートもプレビューできます。
  カテゴリ編集画面で編集中のカテゴリのアーカイブテンプレートをプレビューすることができます。（Pro版のみ）
未公開／日時指定記事のプレビュー機能
  未公開／日時指定の記事をインデックス／アーカイブテンプレートのプレビューに含めることができます。
メール送信機能（Pro版のみ）
  プレビュー画面のURLとコメントをメールで送信できます。
個別アーカイブテンプレート除外機能
  指定した個別アーカイブテンプレートをプレビューに含めません。
最新の更新履歴の読込機能（Pro版のみ）
  PublishDraftプラグインと併用する場合に「公開（原稿）」状態の記事を表示できるようになります。
コンテンツデータのプレビュー機能
  コンテンツデータのプレビューができます。記事と同様にインデックス／アーカイブテンプレートもプレビュー可能です。
プレビュー画面保存機能（Pro版のみ）
  Google Chrome用拡張機能(DynamicPreview Enhancer)をブラウザにインストールすることで、プレビュー画面をPDFまたはJPEG形式で保存することができます。複数テンプレートをプレビューしている場合は、選択中のテンプレートが保存されます。

## インストール

プラグインのアーカイブを解凍し、plugins/DynamicPreviewフォルダをMTのプラグインフォルダへコピーしてください。

Pro版では、mt-static/plugins/DynamicPreviewフォルダもMTをインストールしたフォルダ以下のmt-static/pluginsフォルダへコピーしてください。

## 使い方

記事編集画面またはコンテンツデータ編集画面で、プレビューするテンプレートをドロップダウンメニューから選択し（デフォルトでは全ての個別アーカイブテンプレートをプレビューします）、プレビューボタンを押します。

プレビュー画面に上部には、テンプレート毎のプレビューを切り替えるためのタブが表示されますので、切り替えて内容を確認します。

プレビュー画面の「メール送信」ボタンを押すと、メール送信画面ダイアログが開きます。あて先はプレビューしている記事の編集権限または「プレビュー」権限を持つユーザがドロップダウンメニューに表示されますので、その中から選択することができます。

プレビュー権限

  DynamicPreviewプラグインでは新たに「プレビュー」権限を導入しました。メールで送信されたプレビュー画面のURLをクリックしてプレビューする場合に必要となる権限です。記事の編集は行わないが、プレビューのみ行いたいユーザに利用できます。システムのプラグイン設定画面でプレビューロールを作成するか、既存のロールに「プレビュー」権限を付与し、ロールをユーザに割り当ててください。

テンプレート編集画面では、テンプレートの切り替えは出来ませんので、プレビューボタンを押します。

リンク切れが発生する、画像が表示されない等の不具合がある場合は、プラグイン設定を見直してください。

カテゴリ編集画面では、プレビューボタンまたはショートカットウィジェット内の「このカテゴリのアーカイブをプレビュー」リンクをクリックします。

## プラグイン設定

### プラグインの有効／無効

本プラグインはサイト毎に有効／無効を切替えることができますので、必要ない場合は、プラグイン設定で「動的プレビュー」の「有効にする」チェックボックのチェックを外して、設定を保存してください。

### SSI Include Virtual機能

テンプレート内でSSI Include Virtual機能を利用している場合は、プラグイン設定で「SSIインクルード」の「有効にする」をチェックし、HTTPサーバのドキュメントルートを「ドキュメントルート」へ設定し、設定を保存してください。

「ドキュメントルート」を空欄にすると、子サイトの場合は親サイトの設定に従います。親サイトの場合は「ドキュメントルート」を空欄にするとインクルードが行われません。

### ベースURL設定（Pro版のみ）

URLの記述に相対パスをサポートするために<base>タグを挿入します。また、プレビュー時に、公開サーバが異なるなどでリンク切れが発生する場合は、「ベースURL」へサイトトップのURLを設定することで<base>のURLを変更することができます。

「ベースURL」を空欄にすると、<base>タグのhrefには、サイトURLを設定します。

プレビューするテンプレート毎に「ベースURL」を変更したい場合は、URLに続けて、カンマで区切ってテンプレート名を指定します。

                    http://www.exapmle.com/,記事
                    http://mobile.exapmle.com/,記事(Mobile)

### URL置換機能（Pro版のみ）

ベースURL設定の例のように公開サーバが異なるケースで、かつ、絶対URLを使用している場合には、「URL置換」機能を使って問題を解決することができます。

プラグイン設定で「URL置換」に、「検索対象文字列,置換文字列,テンプレート名」という形式で、一行にひとつずつ設定すると、プレビュー時に設定に従いURLを置換します。HTMLタグのsrc, href, action, content属性内のURLのみ置換対象となります。

例えば、「記事」というテンプレート内のURL置換を行う場合で、公開サーバのホスト名がwww.example.com、MTをインストールしたサーバのホスト名がcms.example.comとすると、以下の様に設定します。

                    http://www.example.com/,http://cms.example.com/,記事

テンプレート名を指定しない場合は、全てのテンプレートに適用されます。

### 文字列置換機能（Pro版のみ）

プレビュー時に生成されたHTMLソース内の文字列を置換する場合は、プラグイン設定で「文字列置換」に「検索対象文字列,置換文字列,テンプレート名」という形式で、一行にひとつずつ設定します。

文字列置換機能は、DynamicPreviewが行う変換の中で、一番最後に行われます。

### インデックス／アーカイブテンプレートプレビュー機能

記事のプレビュー時にインデックステンプレートやアーカイブテンプレートも一緒にプレビューしたい場合は、テンプレートのIDを、一行にひとつずつ設定します。

カテゴリーアーカイブテンプレートを指定した場合、記事に設定されているカテゴリごとにプレビューを生成し、プレビュー画面ではカテゴリごとに別のタブとして表示されます。

制限
  ウェブページのプレビューでは、アーカイブテンプレートは対応していません。インデックステンプレートのみプレビューが生成されます。

### 個別アーカイブテンプレート除外機能

記事編集画面のプレビューテンプレートの一覧（ドロップダウンメニュー）に、特定の個別アーカイブテンプレートを含めたくない場合は、個別アーカイブテンプレートのIDを、一行にひとつずつ設定します。また、ここで指定したテンプレートIDは、プレビューテンプレート一覧から「すべて」を選択してもプレビューには表示されません。

### コンテンツデータ用インデックス／アーカイブテンプレートプレビュー機能

コンテンツデータのプレビュー時にインデックステンプレートやアーカイブテンプレートも一緒にプレビューしたい場合は、テンプレートのIDを、一行にひとつずつ設定します。

カテゴリーアーカイブテンプレートを指定した場合、コンテンツデータに設定されているカテゴリごとにプレビューを生成し、プレビュー画面ではカテゴリごとに別のタブとして表示されます。

ここでテンプレートIDを指定しても、プレビューしようとしているコンテンツデータのコンテンツタイプと一致しないコンテンツタイプ用のテンプレートは、コンテンツデータ編集画面のプレビューテンプレート一覧（ドロップダウンメニュー）やプレビュー画面には表示されません。

### コンテンツデータ用アーカイブテンプレート除外機能

コンテンツデータ編集画面のプレビューテンプレートの一覧（ドロップダウンメニュー）に、特定のコンテンツタイプアーカイブテンプレートを含めたくない場合は、コンテンツタイプアーカイブテンプレートのIDを、一行にひとつずつ設定します。また、ここで指定したテンプレートIDは、プレビューテンプレート一覧から「すべて」を選択してもプレビューには表示されません。

### 未公開／日時指定記事のプレビュー機能

未公開／日時指定記事をインデックス／アーカイブテンプレートに含めてプレビューしたい場合、「含める」にチェックをつけます。

### メール送信機能（Pro版のみ）

プレビュー画面のURLとコメントをメールで送信することができます。メールのデフォルトの件名、本文をMTテンプレート形式で記述できますので、内容を自由にカスタマイズすることができます。

件名のテンプレートは"tmpl/mail_title.tmpl"、本文のテンプレートは"tmpl/mail_body.tmpl"にデフォルトの値が記載されています。

### プレビューロールの作成（システム）（Pro版のみ）

プレビュー権限を付与したプレビュー専用ロール「プレビュー」の作成を行います。「作成する」ボタンを押下すると「プレビュー」という名前のロールを作成します。すでに同じ名前のロールが存在する場合は、何も行いません。別の名前でロールを作成するか、既存のロールにプレビュー権限を割り当ててお使いください。

### 最新の更新履歴の読込機能（Pro版のみ）

メールで送られたプレビュー画面URLからのアクセスで更新履歴の指定がない場合、「更新履歴」をオンにすると、最新の更新履歴を自動的に読み込むようになります。PublishDraftプラグインと併用する場合にオンにすると、「公開（原稿）」状態の記事をプレビューできるようになります。

### プレビュー画面保存機能（Pro版のみ）

Google Chrome用の拡張機能DynamicPreview Enhancerがブラウザにインストールされていると、プレビュー画面をPDFまたはJPEG形式で保存することができます。「プレビューを保存...」プルダウンメニューからファイル形式を選択し、「Go」ボタンを押下するとプレビュー画像が保存されます。複数テンプレートをプレビューしている場合は、選択中のテンプレートが保存されます。

## 既知の問題

- カテゴリセットの編集画面でのプレビューはサポートしていません。

## 更新履歴

- [2025-10-13 v4.00]
  - MT9に対応した。
  - コンテンツデータのフィールドタイプ「複数行テキスト」がプレビューに反映されない不具合を修正した。
- [2025-06-20 v3.23]
  - カテゴリ別など一つのテンプレートで複数のプレビューを生成する場合、2つ目以降のプレビューでプレビューの保存ができない不具合を修正した。
- [2025-04-16 v3.22]
  - 未公開／日時指定コンテンツデータをプレビュー時に含めるかどうかを指定できるようにした。
- [2025-04-11 v3.21]
  - コンテンツデータと一緒にプレビューするテンプレートを指定した際、テンプレートタイプが一致しないテンプレートをプレビューすると画面のリロードを繰り返す不具合を修正した。
- [2024-11-19 v3.20]
  - MT8.4に対応した。
  - コンテントタイプアーカイブ（リスト）テンプレートのプレビューに対応した。
- [2024-07-21 v3.10]
  - MT8に対応した。
  - プレビュー画面をPDFまたはJPEG形式で保存できるようにした。
- [2020-03-013 v3.01]
  - MT7-R4605でプレビューできない不具合を修正した。
- [2019-08-01 v3.00]
  - MT7に対応した。
  - コンテンツデータのプレビューに対応した。
- [2017-12-07 v2.30]
  - 更新履歴が指定されていない場合、最新の更新履歴を読み込むよう設定できるようにした。
- [2017-10-26 v2.26]
  - headタグに属性が付いていてもベースURLを挿入できるようにした。
- [2017-09-09 v2.24]
  - プレビュー画面でサインアウトできるようにした。
- [2017-08-30 v2.23]
  - プレビュー権限のみを持つユーザがウェブサイトのウェブページをプレビューできない不具合を修正した。
- [2017-08-23 v2.22]
  - プレビューURLからアクセスした場合にカテゴリが表示されない不具合を修正した。
- [2017-05-19 v2.21]
  - PSGI環境でプレビューできなくなる不具合を修正した。
- [2017-04-23 v2.20]
  - プレビューテンプレートの一覧から除外する個別アーカイブテンプレートを指定できるようにした。
  - テンプレートの一覧およびプレビュー画面でのタブの並び順を変更し、個別アーカイブテンプレート以外はプラグイン設定での指定順に表示するようにした。
  - プレビュー画面を開いている状態で記事の保存を行った場合、プレビュー画面を更新するようにした。
- [2016-07-01 v2.10]
  - カテゴリ編集画面で編集中のカテゴリのアーカイブテンプレートをプレビューできるようにした。（Pro版のみ）
- [2016-05-06 v2.00]
  - メール送信機能をサポートした。（Pro版のみ）
  - プレビュー権限を導入した。（Pro版のみ）
  - インデックス／アーカイブテンプレートのプレビューに対応した。
  - 未公開／日時指定記事をインデックス／アーカイブテンプレートに含めてプレビューできるようにした。
- [2015-02-24 v1.41]
  - ベースURL機能の動作を変更し、デフォルトでブログ／ウェブサイトURLを使用するようにした。
  - 編集内容がプレビューに反映されない問題を修正した。
- [2015-01-19 v1.40]
  - 通常版とPro版に機能を分離した。
  - モジュール構成を変更した。
- [2014-11-11: v1.32]
  - HTMLソース内の文字列を置換できるようにした。
  - URL置換をテンプレート毎に設定できるようにした。
- [2014-11-04: v1.31]
  - テンプレート毎にベースURLを変更できるようにした。
- [2014-10-30: v1.30]
  - プレビューするテンプレートを選択できる様にした。
  - URL置換をサポートした。
- [2014-09-12: v1.22]
  - X-XSS-Protectionヘッダを0で送信するようにした。
- [2014-09-12: v1.21]
  - <base>タグを挿入する機能をサポートした。
  - 相対URLを絶対URLに変換する機能を廃止した。
- [2014-09-10: v1.20]
  - 相対URLを絶対URLに変換する機能をサポートした。
- [2014-09-10: v1.11]
  - SSI Include Virtual機能でインクルードされるファイルのエンコーディング指定に問題があったので修正した。
- [2014-09-09: v1.10]
  - SSI Include Virtual機能をサポートした。
  - 標準のプレビューボタンを非表示として、プラグイン独自の「PCプレビュー」ボタンを利用するようにした。
- [2014-07-04：v1.00]
  - 最初のリリース

## このプラグインの利用、及び著作権や保証について

このプラグインの著作権は株式会社ジャクスタポジションが所有しています。著作権者の許可なく本プラグインを使用、改変、再配布することはできません。

## 連絡先

作者：Juxtaposition