エントリーのプレビューを行うプラグイン
The blog of H.Fujimoto でお馴染みの壱さんが作られた「エントリーのプレビューを行うプラグイン」のカスタマイズをご紹介します。
Movable Type のエントリーのプレビューは「確認」をクリックすることで出来栄えを見ることができますが、管理用のCSSを用いているため、またHTMLの構造も公開ページと異なるため、実際に公開した時に予想しない表示になっていて慌てて修正することがしばしばありました。
このプラグインは、メインページや各アーカイブと同じテンプレートを使って、いわゆる「隠しページ」を生成し、それを参照することで公開前に表示を確認できるというものです。
ちょっと前から使わせて頂いているのですが、段落・リスト・表・画像等の確認がじっくり行えます。今まではある意味勘で作成・修正していたので、かなり重宝しています。
ということで以下、カスタマイズ方法です。内容は壱さんのページと同じですが、とりあえずメインページのプレビューに着目して書いてみました。
1.プラグインのダウンロード
The blog of H.Fujimoto:エントリーのプレビューを行うプラグイン(その1)
より mt-rebuild-preview.zip のリンクをクリックしてプラグインアーカイブをダウンロードします。
2.ファイルのアップロード
アーカイブを解凍すると下記のファイルがあります。
- mt-rebuild-preview.cgi
- /extlib/FJ/RebuildPreview.pm
- /plugins/TagsForPreview.pl
- /tmpl/cms/rebuild_preview.tmpl
これらのファイルを、MTCGIPath をルートパスとして、同じ名称のディレクトリ配下にそれぞれアップロードします。例えば mt-rebuild-preview.cgi は mt.cgi と同じディレクトリに、TagsForPreview.pl は plugins ディレクトリ配下にアップロードします。存在しないディレクトリ(FJ)は新たに作成してください。mt-rebuild-preview.cgi のパーミッションは 755 等に変更してください。
3.メインページプレビュー用テンプレート作成
管理画面の「テンプレート」の右上にある「インデックステンプレートの作成」をクリックし、
次のページでそれぞれ以下のように設定します。
- テンプレートの名前:メインページプレビュー(何でもいいです)
- 出力ファイル名:preview.html
- 再構築オプション:チェックを外す
- テンプレートの中身:メインページの中身を丸ごとコピー
出力ファイル名はここでは preview.html としましたが、他の方に参照されない名称にしてください。またメインページが index.php の場合は preview.php としてください。
4.テンプレートの修正
プレビュー用テンプレートの下記の赤色部分 MTEntries を青色のように MTEntries WithDraft に変更します。
修正前
:
<MTEntries lastn="5">
<$MTEntryTrackbackData$>
:
</MTEntries>
:
修正後
:
<MTEntriesWithDraft lastn="5">
<$MTEntryTrackbackData$>
:
</MTEntriesWithDraft>
:
修正が終わったら、保存・再構築します。出力ファイル名を指定して表示されていればここまでの設定はOKです。
5.プレビュー用テンプレートの関連付け
3?4項で作成したテンプレートをプレビュー用テンプレートとして関連づける作業を行います。
メインメニュー下にある「利用可能なプラグインの設定」で Tags For Preview のリンクをクリックします。 |
複数のブログを作っている場合は、画像のようにブログ選択画面が表示されます。プレビュー表示したいブログを選択して「送信」ボタンをクリックします。 |
クリックするとインデックステンプレート一覧表示画面に遷移します。ここでプレビュー用のテンプレートを選択し、「保存」ボタンをクリックします。複数のプレビュー用テンプレートを作っている場合は、Windowsの場合は Ctrlキーを押しながらクリックすることで複数のテンプレートを選択することができますので、すべてを選択してください。 |
6.管理画面にプレビュー用の設定を追加
/tmpl/cms/edit_entry.tmpl を任意のエディタで開き、青色部分を追加します。各行数は追加した後の行数になっていますので、目安にしてください。2番目と3番目の追加は緑色の行で検索すると便利です。
5行目あたり
<script type="text/javascript">
<!--
function doRebuildPreview () {
window.open('mt-rebuild-preview.cgi?__mode=start_rebuild&blog_id=<TMPL_VAR NAME=BLOG_ID>&entry_id=<TMPL_VAR NAME=ID>', 'doRebuildPreview', 'width=400,height=250,resizable=yes,scrollbars=yes');
}
function listPreviousPings () {
window.open('<TMPL_VAR NAME=SCRIPT_URL>?__mode=pinged_urls&entry_id=<TMPL_VAR NAME=ID>&blog_id=<TMPL_VAR NAME=BLOG_ID>', 'urls', 'width=370,height=250,resizable=yes,scrollbars=yes');
}
130行目辺り
<TMPL_IF NAME=POSITION_BUTTONS_TOP>
<div id="button-bar">
<TMPL_UNLESS NAME=NEW_OBJECT>
<input class="button" onClick="doRebuildPreview()" type="button" value="<MT_TRANS phrase="Preview on Blog">">
</TMPL_UNLESS>
<input type="submit" name="preview_entry" value="<MT_TRANS phrase="Preview">" />
<input type="submit" value="<MT_TRANS phrase="Save">" />
<TMPL_UNLESS NAME=NEW_OBJECT>
<input onclick="doRemoveItem('<TMPL_VAR NAME=ID>', 'entry&blog_id=<TMPL_VAR NAME=BLOG_ID>')" type="button" value="<MT_TRANS phrase="Delete Entry">" />
</TMPL_UNLESS>
</div>
</TMPL_IF>
330行目辺り
<TMPL_IF NAME=POSITION_BUTTONS_BOTTOM>
<div id="button-bar">
<TMPL_UNLESS NAME=NEW_OBJECT>
<input class="button" onClick="doRebuildPreview()" type="button" value="<MT_TRANS phrase="Preview on Blog">">
</TMPL_UNLESS>
<input type="submit" name="preview_entry" value="<MT_TRANS phrase="Preview">" />
<input type="submit" tabindex="13" value="<MT_TRANS phrase="Save">" />
<TMPL_UNLESS NAME=NEW_OBJECT>
<input onclick="doRemoveItem('<TMPL_VAR NAME=ID>', 'entry&blog_id=<TMPL_VAR NAME=BLOG_ID>')" type="button" value="<MT_TRANS phrase="Delete Entry">" />
</TMPL_UNLESS>
</div>
</TMPL_IF>
ここまでの作業が終わればメインページのプレビューができる状態になります。
7.プレビューする
プレビューの方法は、編集したエントリーに「Preview on Blog」というボタンが現れるので、これをクリックします。「確認」ボタンはエントリー保存前の状態でも可能ですが、「Preview on Blog」の場合は実行前に必ず「保存」をクリックしてください。 |
8.ボタンを日本語化する
「Preview on Blog」を「プレビュー」等の日本語に変更したい場合は、lib/MT/L10N/ja.pm の任意の行に下記を追加します。
'Preview on Blog' => 'プレビュー',
9.他のアーカイブページをプレビューする場合
アーカイブページ(カテゴリーアーカイブ/日付アーカイブ/個別エントリーアーカイブ)のプレビューも行いたい場合は各アーカイブテンプレートを3項と同じ手順で作ります。アーカイブテンプレートではなくインデックステンプレートとして作りますのでご注意ください。
出力ファイル名はそれぞれ異なる名称にしてください。そしてそれぞれの「ファイルの中身」を下記のタグでテンプレート全体を括ってください。
カテゴリーアーカイブ
<MTPretendCategoryTemplate> ? </MTPretendCategoryTemplate>
月別アーカイブ(日付アーカイブをコピー)
<MTPretendDateTemplate archive_type="Monthly"> ? </MTPretendDateTemplate>
週別アーカイブ(日付アーカイブをコピー)
<MTPretendDateTemplate archive_type="Weekly"> ? </MTPretendDateTemplate>
日別アーカイブ(日付アーカイブをコピー)
<MTPretendDateTemplate archive_type="Daily"> ? </MTPretendDateTemplate>
個別エントリーアーカイブ
<MTPretendIndividualTemplate> ? </MTPretendIndividualTemplate>
上記はデフォルトのアーカイブ設定状態を想定しています。例えば週別アーカイブテンプレートや・日別アーカイブテンプレートを月別アーカイブテンプレートと別に新しく作っている場合はそちらからコピーしてください。
設定後、5項の作業を行い、新しく作ったインデックステンプレートをプレビュー用としての関連付けを行います。
以上です。
2005.08.19 追記
8項にボタンの日本語化の項目を追加しました。
- Movable TypeにGoogle Analyticsの情報を設定する方法
- Movable Typeのブログ選択メニューをカスタマイズする
- Movable Type 5.1のリスティングフレームワークで独自管理画面を作る(その1)
- Movable Typeのインポート・エクスポートでカスタムフィールドを扱う
- ブログ記事の本文編集エリアを拡張する
- テンプレート一覧のアクションに「テンプレートの再構築」を追加する
- Movable Type の管理画面用テンプレートファイル名を管理画面に表示する
- Movable Type で簡単に valid な XHTML 文書を作る
- アップロードしたファイルをブログ記事に挿入する
- カスタムフィールドのラジオボタンを横並びにする
- Movable Type でメールマガジンを作る(メールアドレスの解除)
- Movable Type 4 のブログ記事投稿画面のカテゴリー選択エリアを拡張する
- カスタムフィールドによるアップロード画像をサムネイルで表示するプラグイン 0.02
- CORESERVER / XREA にcron ジョブ(Movable Type 4 の run-periodic-tasks)を設定する
- Movable Type のスケジュール・タスク実行(Windows 編)
≫ PHPでモジュール化しててもOKの「まんまプレビュー」 from やむやむ
以前、「エントリの投稿画面に個別アーカイブのまんま状態でプレビューできるボタン装... [続きを読む]
≫ 本当の「確認」 from チームニゴイでございます。
MovableType。記事を書いたときの「確認」、これあくまでも文字の確認や画... [続きを読む]
≫ エントリーのプレビュープラグイン from grumble...
エントリーの編集のとき一応確認するんだけど文字の大きさや画像との間隔が 全く違っていて、プレビューなんだろうけど全くプレ... [続きを読む]
≫ 拡張日記2 from Ars longa vita brevis.
・ファイルのアップロードで上書きを有効にする ・エントリーのプレビューを行うプラ... [続きを読む]
≫ エントリーのプレビューを行うプラグイン from showry's Blog
MovableTypeのカスタマイズです。
エントリー投稿時の確認ボタンでのプレビュー表示は画像とかは表示されないため、実際のWeb表示イメージがつかめま... [続きを読む]
≫ エントリーのプレビュー from PARADISE BLOG
Movable Type に搭載されているプレビュー機能は、正確な表示がされない... [続きを読む]
≫ MT3.2 WYSIWYG from 東風Ex
ちょっと前に「BigPAPIが絡むWYSIWYGプレビューはMT3.3が出るまで... [続きを読む]
≫ 隠居のMT:RebuildPreview MT3.3対応インストール from Atelier Shuhei Weblog
藤本壱さんが、エントリーのプレビューを行うプラグインを昨日(2006/7/11... [続きを読む]
≫ 編集中エントリーのプレビュー from Tree eyes good.
Movable Type には編集中のエントリーをプレビューする機能があります... [続きを読む]
≫ MTで公開前にエントリーのプレビューを行うプラグイン from caraldo.net | MT Blog
Movable Typeのエントリーのプレビューは「確認」をクリックで出来栄えを... [続きを読む]
おはようございます。
以前、MT-Preview を使ってプレビューする方法を導入したのですが
記事の本文もモジュール化してるので、表示されなくて今ひとつだったんです。
これなら、丸々 エントリ後の状態を見ることができるので、助かります。
yujiroさん!おはようございます。
これこれ!やってみたかったんですよぉ?
でも、なんだか難しそうで戸惑っていました(笑)
こちらを読んで、やっぱりやってみよう意欲がわいてきました。
今日は1日、このカスタマイズしたいと思いますっ!
yujiroさん、こんにちは。
>今まではある意味勘で作成・修正していたので
まさに私も「the勘」(私語?)頼り、いつもドキドキで「保存」してました(笑)。
さっそく導入してみたいと思いました。でも、肝心のエントリー内容が、
導入後も大して見栄え変わってないじゃんチャンチャン♪ということにならないようにせねば^^;
再びこんにちは。
壱さんよりコメントで教えていただいたのですが、
記事の本文をモジュール化したままでは、プレビューできないんですね。
てことで、プレビュー用のテンプレートは モジュール化をやめました。
こんにちは。
プレビューのプラグインをご紹介いただき、ありがとうございます。
また、ボタンの表記の日本語化についても書いていただき、ありがとうございます。
なお、今の版ではedit-entry.tmplを書き換えることが必要ですが、最近出た「BigPAPI」を組み合わせると、edit-entry.tmplをプラグインから動的に書き換えることができそうです。
いずれそのカスタマイズも行ってみたいと思います。
>さえらさん
こんばんは。
早速のご利用ありがとうございます(モジュール化まで解除くださって!)。
うまくできたようで良かったです!
>ミッチさん
こんばんは。
コメントありがとうございます。
私の長編を読まれてカスタマイズされる方の気持ちが良くわかりました。(笑)
お暇な時に取り組んでやってください。
>maiさん
こんばんは。
コメントありがとうございます。
皆さん、保存・公開される時の気持ちは同じですね。(笑)
段落の使い方とかちょっとしたところでも確認できるのでなかなかいいですよ。
>壱さん
こんばんは。
コメントありがとうございました。
素晴らしいカスタマイズ提供くださりありがとうございます。
BigPAPIは初耳でした。こちらも楽しみにしています。
こんにちは。
いつもお世話になります。
早速導入してみました。これ、”微妙”な確認ができてとてもありがたいですよね(^_^)b
>くんぞ?さん
こんばんは。
記事参照&トラックバックありがとうございます。
はい、私も大変重宝しております。
最近プレビューに頼り過ぎて推敲後のタグの確認をかなり怠ってます。(笑)
こんばんば、yujiroさん
プレビューのプラグインも、導入したので
記事を参考に、させて頂きました。
今までは、何回も確認作業を繰り返していたけど
今度から確認がスムーズになりました。(笑)
ご丁寧な説明、大変参考になりました
ありがとうございます。
>mituruさん
こんにちは。
記事参照ありがとうございます。
このプラグインは私も重宝しています。
ではでは!
いつもお世話になります。
MT3.2では壱さんのエントリープレビューを重宝していたのですが、MT3.3にバージョンアップして、BigPAPIともども再インストールしたのですがうまく動きません。やはり、3.3とは相性が悪いのでしょうか。
>n_shuheiさん
こんばんは。
ご質問の件ですが、とりあえず配布元にコメントしておきました。
そのうち改修されることを期待したいと思います。
ではでは!
>yujiroさん
早速の対応ありがとうございました。
昨日(2006/7/11)に、壱さんが対応していただいたようです。今日試してみることにします。とりあえず!
>yujiroさん
壱さんのMT3.3対応改修版を早速インストールしました。私には珍しくすんなりいきました。ありがとうございました。
TBさせてもらいました。
>n_shuheiさん
こんにちは。
ご連絡ありがとうございました。
すぐにリリースくださったようで良かったです。
ではでは!
お世話になっております。インストール後、プレビューができるようになり、とても助かっています。しかし、ひとつだけどうしても気になることがあるので、なんとか直したく思っているのですが「5.プレビュー用テンプレートの関連付け」の作業を2度行ってしまったためか、エントリーの編集画面に「プレビュー」ボタンが2つできてしまっています。どちらの「プレビュー」ボタンも正常に動作するのですが、どうしても1つにしたいのです。。。pluginsフォルダの下のRebuildPreviewフォルダごと、一旦削除して、サーバーにアップしなおしましたが、それだけでは直りませんでした。どうしたらよいのでしょうか?よろしくお願い致します。
>へまさん
こんにちは。このプラグインを作った壱です。
ご質問の件ですが、現在配布しているプラグインでは、プレビューボタンを追加する処理も、プラグインが自動的に行うようになっています。
そのため、このエントリーの「6.管理画面にプレビュー用の設定を追加」の手順を行うと、ボタンが2つ表示されてしまうことになります。
6.で追加した部分を削除して元に戻せば、ボタンは1つになるはずです。
>へまさん
壱さんのご回答の通りでお願い致します。
過去の記事で申し訳ありませんでした。
>壱さん
ご回答ありがとうございました!
プラグインの記事は見直します…
壱さん、yujiroさん
ご回答いただき、ありがとうございました。
試してみたのですが、なぜだかpreviewボタンが消えてくれず、今回は時間的に、使うのをあきらめることにしました。。。
また、時間があるときにTryしてみます。ありがとうございました!
壱さん、yujiroさん
できました。どうやら、plugins/MailFormの下と、plugins/RebuildPreviewの下にひとつずつmt-rebuild-preview.cgiがあったようで(私のアップロードミスです。)plugins/MailFormの下にあったmt-rebuild-preview.cgiを消したら、プレビューボタンがひとつになりました。お騒がせしました。ありがとうございました!
>へまさん
こんにちは。
ご連絡ありがとうございました。
無事に直ったようで良かったです。
ではでは!