エントリー本文
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 ));
}
...後略...
これでブログ記事一括編集画面に概要フィールドが表示され、正常に変更できるようになります。
