WS000011.JPG

えっと、The blog of H.Fujimoto さんのナイスなプラグインを導入して、ロリポで指定日投稿ができるようになったので、ここのところ、指定日投稿をするようにしてるんですけどね。一点だけ MT 本体側に不満があったのですよ。それは何かと言うと、エントリーのプレビュー画面が WYSIWYG じゃ無いということ。せっかく、指定日投稿で投稿しても、投稿されるまでレイアウトがきちんとなっているか確認できなかったので、後で手直しすることがけっこうありまして。(苦笑) でも、元来がめんどくさがりの私としては、まぁ、それも致し方なしということで、スルーしてたんですがね。

先日、私的にトップのレイアウト構成が結構好きな LeapK.com さんより、「投稿前に WYSIWYG で確認できるプラグインあるよ~」ととてもナイスな情報をいただきまして、早速確認してみたら・・・なんだ、lomo さんとこに出てるじゃん(笑)、と言うことで、サクッと導入させていただきましたー。ありがとうございます。

■TB to エントリの確認を実際の画面での巻 by LeapK.com
■TB to エントリーのプレビュー by MT::LUVLOG

まんま導入すると、海外製のプラグインのため、文字化けします。で、その解決策も LeapK.com さん経由で coo MEMO さんのところにありました。ありがとうございます。

■TB to エントリーのWYSIWYGプレビュー by coo MEMO

ちなみに、サイドのパーツとかを PHP でモジュール化してると、WYSIWYG でのプレビュー画面でそのモジュールは表示されません。テンプレート形式では無く、CGI形式 にてのプレビュー表示ですので。まぁ、雰囲気はより本ちゃんの画面と同じになるので、あまり気にすることは無いと思いますが、エントリー部分自体をPHPでモジュール化してると、どう表示されるかわかりません。場合によっては表示されないかもです。(未確認)

以下、MT3.17 in ロリポ、導入メモです。って言うか、ほとんどコピペですけど。(笑)

  1. 10 Goto 10:MT-Preview: WYSIWYG Preview Mode for Movable Type より、コードを DL して展開。
  2. 展開して出来たファイルのうち、/extlibs/Laurentm/Preview.pm に日本語を認識させるための一文を以下のように追加します。

    sub init {
        my $app = shift;
        $app->SUPER::init(@_) or return;
        $app->add_methods(‘wysiwyg_preview’ => \&preview);
        $app->{default_mode}   = ‘wysiwyg_preview’;
        $app->{template_dir}   = ‘cms’;
        $app->{requires_login} = 1;
        $app->{user_class}     = ‘MT::Author’;
        $app->{charset}        = $app->{cfg}->PublishCharset;
        $app;
    }

  3. 上記修正が終わったら展開したファイル群を下記のとおり、自鯖へアップします。
    ・mt-preview.cgi → mt.cgiと同じ場所へ(パーミッション700:ロリポ推奨)
    ・preview.pl → pluginsディレクトリへ
    ・Laurentmフォルダ → extlibディレクトリへ
  4. 続いて /tmpl/cmsディレクトリ内にある edit_entry.tmpl を下記のとおり3箇所修正。元ファイルのバックアップは忘れずに。

    ※別窓で開くサイズを LeapK.comさ んと同じ理由で指定しておりません。
    ※最初の8行目あたり、155行目あたり、442行目あたりの三箇所です。

    <TMPL_INCLUDE NAME="header.tmpl">

    <div id="edit-entry">

    <script type="text/javascript">
    <!–

    function doPreview () {
    window.open(‘<TMPL_VAR NAME=SCRIPT_PATH>mt-preview.cgi?blog_id=<TMPL_VAR NAME=BLOG_ID>&entry_id=<TMPL_VAR NAME=ID>’, ”, ‘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’);
    }

    <TMPL_IF NAME=POSITION_BUTTONS_TOP>
    <div id="button-bar">
    <TMPL_UNLESS NAME=NEW_OBJECT>
    <input class="button" onClick="doPreview()" type="button" value="<MT_TRANS phrase="WYSIWG">">  
    </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&amp;blog_id=<TMPL_VAR NAME=BLOG_ID>’)" type="button" value="<MT_TRANS phrase="Delete Entry">" />
    </TMPL_UNLESS>
    </div>
    </TMPL_IF>

    <TMPL_IF NAME=POSITION_BUTTONS_BOTTOM>
    <div id="button-bar">
    <TMPL_UNLESS NAME=NEW_OBJECT>
    <input class="button" onClick="doPreview()" type="button" value="<MT_TRANS phrase="WYSIWG">">  
    </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&amp;blog_id=<TMPL_VAR NAME=BLOG_ID>’)" type="button" value="<MT_TRANS phrase="Delete Entry">" />
    </TMPL_UNLESS>
    </div>
    </TMPL_IF>

以上。