MovableType の編集画面には、編集中の内容をプ
レビュー できる確認ボタンがありますが、
テンプレート やスタイルシートを派手に
カスタマイズ している場合、
このプ
レビュー と実際に出力されたページの見栄えが大きく異なってしまいます。
そこで今回、編集中の内容を実際の見栄えに極めて近い状態で
リアルタイムにプレビュー できる ようにしてみました。
これをユーザサイドで動作する Bookmarklet として提供することで、
別途
プラグイン を導入するなどの手間を省き、プ
レビュー の度に
サーバ 負荷をかけない
快適な WYSIWYG(What You See Is What You Get)編集を実現しています。
背景
MovableType の記事編集画面から実際の出力に近い見栄えでプ
レビュー を行うために、
エントリーのプレビューを行うプラグイン
を導入してプ
レビュー 機能を拡張する方法や、また
WYSIWYG
という点から、
Movable Typeで使えるWYSIWYGエディタ を導入するなどの hack が既に幾つか公開されています。
しかしながら、これらの方法を見ると、新しく
プラグイン を導入したり、プ
レビュー 用の
テンプレート を別に用意したり、
MovableType のバージョンに依存したりと、誰もが手軽に導入するには少し敷居が高いように思えます。
後者のWYSIWYGエディタについても、文字装飾の効果をその場で確認できるものの、
サイト上で最終的に得られる見栄えについては対応しきれません。
先日、
"[ajax]quickedit - HTMLリアルタイム編集(ブックマークレット)" という記事で、
子ウィンドゥの編集結果を JavaScript を使って親ウィンドゥに反映するアイディア を目にしたのですが、
これと同じように――今度は逆に――
親ウィンドゥ(MTの記事編集画面)の編集操作を子ウィンドゥ(プレビュー ウィンドゥ)に反映できないだろうか、
と思い立ったのが事の始まりです。
この記事で紹介している方法では現在、
エントリの内容(body) と追記(extend) のみプレビュー 可能で、
タイトルやカテゴリなどの変更はプレビュー に反映されません。
それは、実際の見栄えを確認しながら編集作業を行いたい部分を思い浮かべてみると、
上記二つの編集内容がプレビュー できれば十分に思えるからです。
特徴
使い方
記事プレビュー 用の Bookmarklet をブックマーク に登録します(後述)
MovableType のエントリーの編集画面を開きます
1. でブックマーク した Bookmarklet を開きます
新しくプレビュー ウィンドゥが開きます
エントリーの編集画面で記事を編集すると、その結果がプレビュー ウィンドゥに反映されます
Bookmarklet は一度だけ開いてください
プレビュー ウィンドゥを閉じた時は、再度 Bookmarklet を開いてください
エントリを保存した時は、再度 Bookmarklet を開いてください
Bookmarklet を登録する
Bookmarklet はそれぞれの環境に応じて異なったものになります。
登録に先立って、以下のフォームをあなたの
MovableType やサイトに合わせて適切に設定してください。
フォームの内容に応じた Bookmarklet が自動的に生成されます。
記事の出力結果を確認するためのページのURL(テンプレート ) :
… プレビュー のテンプレート として使用するページのURLを指定します。
具体的には、あなたのサイトの何れかの記事のパーマリンク URL です。
ここで指定されたページの body 部分と extend(more) 部分に編集中の内容を流し込むことで、
実際の出力結果に近い見栄えを得ることができます。
編集画面のエントリーの内容(body)部分をテンプレート で確認する
┗ テンプレート 中のID:
… body 部分のプレビュー を行う場合にチェックしてください。
そして次に、上で指定したページの中で body 部分が流し込まれる要素(例えばdivやp)の ID を指定してください。
body 部分に ID の指定が無い場合、お手数ですがエントリアーカイブテンプレート を修正して頂く必要があります。
編集画面の追記(extend)部分をテンプレート で確認する
┗ テンプレート 中のID:
… extend(more) 部分のプレビュー を行う場合にチェックしてください。
そして次に、上で指定したページの中で extend(more) 部分が流し込まれる要素(例えばdivやp)の ID を指定してください。
extend(more) 部分に ID の指定が無い場合、お手数ですがエントリアーカイブテンプレート を修正して頂く必要があります。
上のフォームが適切に設定されたら 、この
Bookmarkletへのリンク をあなたのブックマーク に追加してください。
なお、登録される Bookmarklet の内容は以下の通りです。
Bookmarklet を登録するには、上のリンク を右クリック→[このリンク をブックマーク ]で行えます(Firefox の場合)
上で入力されたダブルクォート(")およびシングルクォート(')のサニタイズを行っていません。
トラブルシューティング
プレビュー ウィンドゥが開かない
ブラウザ のポップアップブロックが動作していないか確認してください
テンプレート に指定されたページのURLが正しいか確認してください
Bookmarklet を開くと "Previewing Failure." とメッセージが表示される
MovableType のエントリ編集画面を開いている状態で Bookmarklet を実行してください
MovableType の将来のバージョンでは動作しないかもしれません
編集内容がプレビュー に反映されない
Bookmarklet を登録する前に、それぞれのフォームの ID を正しく設定してください
mt.cgi とプレビュー 用のページが同じドメインであるか確認してください
もう一度 Bookmarklet を開いてみてください。編集の結果は最新のプレビュー ウィンドゥに反映されます
ブラウザ が落ちることがある
記事がHTML タグを含む場合、編集過程で不正なHTML の状態でページがレンダリングされるためと考えられます。意識的に閉じタグから先に書くことで、ブラウザ に優しい場合があります
雑記
この記事を読んだ人はこんな記事も読んでいます
MovableType, NovableType, JovableType, KovableType, MIvableType, M9vableType, M0vableType, MPvableType, MLvableType, MKvableType, MoCableType, MoFableType, MoGableType, MoBableType, MovQbleType, MovWbleType, MovSbleType, MovZbleType, MovaVleType, MovaGleType, MovaHleType, MovaNleType, MovabKeType, MovabOeType, MovabPeType, MovablWType, Movabl3Type, MovablRType, MovablDType, MovablSType, MovableRype, Movable5ype, Movable6ype, MovableYype, MovableGype, MovableFype, MovableTTpe, MovableT6pe, MovableT7pe, MovableTUpe, MovableTHpe, MovableTGpe, MovableTyOe, MovableTy0e, MovableTy-e, MovableTyLe, MovableTypW, MovableTyp3, MovableTypR, MovableTypD, MovableTypS
Hack, Gack, Yack, Uack, Jack, Nack, Back, HQck, HWck, HSck, HZck, HaXk, HaDk, HaFk, HaVk, HacJ, HacI, HacO, HacL, HacM
Ajax, Qjax, Wjax, Sjax, Zjax, AHax, AUax, AIax, AKax, AMax, ANax, AjQx, AjWx, AjSx, AjZx, AjaZ, AjaS, AjaD, AjaC
JavaScript, HavaScript, UavaScript, IavaScript, KavaScript, MavaScript, NavaScript, JQvaScript, JWvaScript, JSvaScript, JZvaScript, JaCaScript, JaFaScript, JaGaScript, JaBaScript, JavQScript, JavWScript, JavSScript, JavZScript, JavaAcript, JavaWcript, JavaEcript, JavaDcript, JavaXcript, JavaZcript, JavaSXript, JavaSDript, JavaSFript, JavaSVript, JavaScEipt, JavaSc4ipt, JavaSc5ipt, JavaScTipt, JavaScFipt, JavaScDipt, JavaScrUpt, JavaScr8pt, JavaScr9pt, JavaScrOpt, JavaScrKpt, JavaScrJpt, JavaScriOt, JavaScri0t, JavaScri-t, JavaScriLt, JavaScripR, JavaScrip5, JavaScrip6, JavaScripY, JavaScripG, JavaScripF
ブックマークレット
寄せられたコメント (全 1 件中、最新 5 件まで表示しています)
当サイトの"最近の注目記事(左サイドバー部分)"のように、
各記事へのアクセスログから hot entry を抽出している場合など
管理者のプレビューがこれらの集計結果に影響を与える場合があります。
そういう場合、プレビュー用のダミー記事を static に生成しておき
そちらをプレビュー用のページとして指定してやれば回避できます。