PowerEdit プラグインで概要を適正に表示する

PowerEdit プラグインで概要を適正に表示する

Posted at November 14,2008 1:55 AM
Tag:[MovableType, patch, Plugin, PowerEdit]

昨日公開した PowerEdit プラグインでは概要フィールドを表示していませんでしたが、概要フィールドを適正に表示する方法を紹介します。

PowerEdit プラグインで概要を表示していない理由は、一括編集画面表示時には概要フィールドの内容は、その手前の一覧画面の詳細表示用に最適化(一覧に概要を表示するため、概要フィールドが空の場合、本文の内容を抜粋)してしまっており、CMSContext プラグインで MTExcerpt タグに no_generate モディファイアを適用しても加工後のデータしか取得できません(下)。この状態で保存を行うと、概要フィールドに余分な内容が保存されてしまいます(赤枠部分)。

概要が表示される例

したがって、ソースコードを修正して、概要フィールドが空のときは何も表示しないようにします(下)。

修正後の例

ただし、この修正を行うと、ブログ記事一覧表示の詳細モードの表示で概要フィールドが空の場合は表示されなくなります。

もう少しエレガントな修正方法があるかもしれませんがとりあえず。

1.パッチをあてる

lib/MT/CMS/Entry.pm に以下のパッチを適用します。

--- Entry.pm.bak        Fri Nov 14 01:55:15 2008
+++ Entry.pm    Fri Nov 14 01:56:03 2008
@@ -1843,13 +1843,6 @@
         if ( $row->{excerpt} ) {
             $row->{excerpt} = remove_html( $row->{excerpt} );
         }
-        if ( !$row->{excerpt} ) {
-            my $text = remove_html( $row->{text} ) || '';
-            $row->{excerpt} = first_n_text( $text, $excerpt_max_len );
-            if ( length($text) > length( $row->{excerpt} ) ) {
-                $row->{excerpt} .= ' ...';
-            }
-        }
         $row->{text} = break_up_text( $row->{text}, $text_max_len )
           if $row->{text};
         $row->{title_long} = remove_html( $obj->title );

パッチの適用方法が分からない場合は、lib/MT/CMS/Entry.pm を任意のエディタで開いて、下記の赤色部分をコメントアウトしてください。

変更前

...前略...
        if ( $row->{excerpt} ) {
            $row->{excerpt} = remove_html( $row->{excerpt} );
        }
        if ( !$row->{excerpt} ) {
            my $text = remove_html( $row->{text} ) || '';
            $row->{excerpt} = first_n_text( $text, $excerpt_max_len );
            if ( length($text) > length( $row->{excerpt} ) ) {
                $row->{excerpt} .= ' ...';
            }
        }
        $row->{text} = break_up_text( $row->{text}, $text_max_len )
          if $row->{text};
...後略...

変更後

...前略...
        if ( $row->{excerpt} ) {
            $row->{excerpt} = remove_html( $row->{excerpt} );
        }
<span class="attn">#        if ( !$row->{excerpt} ) {
#            my $text = remove_html( $row->{text} ) || '';
#            $row->{excerpt} = first_n_text( $text, $excerpt_max_len );
#            if ( length($text) > length( $row->{excerpt} ) ) {
#                $row->{excerpt} .= ' ...';
#            }
#        }</span>
        $row->{text} = break_up_text( $row->{text}, $text_max_len )
          if $row->{text};
...後略...

2.entry_table.tmpl を編集する

「4.代替テンプレートの設定」でダウンロードした alt-tmpl.zip の中にある entry_table.tmpl を任意のエディタで開き、下記の赤色部分を削除します。

...前略...
<mt:ignore>
            <tr>
                <th><__trans phrase="Excerpt"></th>
                <td colspan="9"><textarea style="width:760px" type="text" name="excerpt_<$mt:var name="id"$>"><mt:entryExcerpt convert_breaks="0" no_generate="1" escape="html" /></textarea>
            </tr>
</mt:ignore>
...後略...

プラグインの修正

PowerEdit.pl を任意のエディタで開き、赤色のコメントアウトマークを削除します。

...前略...
        if ($q->param('text_more_' . $id )) {
            $entry->text_more($q->param('text_more_' . $id ));
        }
#        if ($q->param('excerpt_' . $id )) {
#            $entry->excerpt($q->param('excerpt_' . $id ));
#        }
        if ($q->param('keywords_' . $id )) {
            $entry->keywords($q->param('keywords_' . $id ));
        }
...後略...

これでブログ記事一括編集画面に概要フィールドが表示され、正常に変更できるようになります。

関連記事
zenback
人気エントリー
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)