TopMovable Typeプラグイン管理画面 > PowerEdit プラグインでカスタムフィールドを表示する(MT5:テキスト編)
2010年9月 7日

PowerEdit プラグインでカスタムフィールドを表示する(MT5:テキスト編)

Posted at September 7,2010 10:55 PM
Category:[管理画面]
Tag:[, , , ]

Movable Type 5.0x のブログ記事一括編集画面に複数のフィールドを表示する PowerEdit プラグインをカスタマイズして、カスタムフィールドを表示する方法を紹介します。

変更前
PowerEdit プラグイン(変更前)

変更後
PowerEdit プラグイン(変更前)

以前、「PowerEdit プラグインでカスタムフィールドを表示する(テキスト編)」でMT4版でのカスタマイズ方法をエントリーしていましたが、MT5でプラグインの実装や代替テンプレートの記載内容が変わったため、改めてエントリー致します。

1.カスタムフィールドを作成する

次のような「テキスト」カスタムフィールドを作成します。

「テキスト」カスタムフィールドを作成

ベースネームはシステムで生成した「cf」という値を用います(ベースネームがプラグインカスタマイズのキモになります)。

以下、この設定を例に説明します。

2.entry_table.tmpl の編集

alt-tmpl/include/entry_table.tmpl の 245 行目あたりに青色のサブテンプレートを追加します。

...前略...
<mt:ignore>===================================</mt:ignore>
        <mt:if name="is_power_edit">
            <tr class="<mt:if name="__odd__">odd<mt:else>even</mt:if>">
                <th><__trans phrase="Text"></th>
                <td colspan="9"><textarea style="width:630px;height:200px" type="text" name="text_<$mt:var name="id"$>"><mt:PowerEditEntries class_type="$object_type" id="$id"><mt:entryBody no_asset_cleanup="1" convert_breaks="0" escape="html" /></mt:PowerEditEntries></textarea></td>
            </tr>
            <tr class="<mt:if name="__odd__">odd<mt:else>even</mt:if>">
                <th><__trans phrase="Extended"></th>
                <td colspan="9"><textarea style="width:630px;height:80px" type="text" name="text_more_<$mt:var name="id"$>"><mt:PowerEditEntries class_type="$object_type" id="$id"><mt:entryMore no_asset_cleanup="1" convert_breaks="0" escape="html" /></mt:PowerEditEntries></textarea></td>
            </tr>
<mt:ignore>
            <tr class="<mt:if name="__odd__">odd<mt:else>even</mt:if>">
                <th><__trans phrase="Excerpt"></th>
                <td colspan="9"><textarea style="width:630px;height:80px" type="text" name="excerpt_<$mt:var name="id"$>"><mt:PowerEditEntries class_type="$object_type" id="$id"><mt:entryExcerpt convert_breaks="0" no_generate="1" escape="html" /></mt:PowerEditEntries></textarea></td>
            </tr>
</mt:ignore>
            <tr class="<mt:if name="__odd__">odd<mt:else>even</mt:if>">
                <th><__trans_section component="PowerEdit"><__trans phrase="EntryProductName"></__trans_section></th>
                <td colspan="9"><input style="width:630px" type="text" name="customfield_cf_<$mt:var name="id"$>" value="<mt:PowerEditEntries class_type="$object_type" id="$id"><mt:EntryProductName /></mt:PowerEditEntries>" /></td>
            </tr>
        </mt:if>
...後略...

追加したタグの意味は次の通りです。

  • <__trans phrase="EntryProductName">:見出しになります。phrase 属性の値はなんでもかまいません。見出しの日本語ローカライズを行なう場合は4項を参照してください。
  • input 要素の name 属性:値に「customfield_cf_<$mt:var name="id"$>"」を設定します。「cf」の部分がベースネームに対応します。作成したカスタムフィールドのベースネームに適宜書き換えてください。その他の部分は固定です。
  • input 要素の value 属性:カスタムフィールドのテンプレートタグ、MTEntryProductName タグを記述して、MTPowerEditEntriesタグで括ります。

3.CMS.pm の修正1

plugins/PowerEdit/lib/PowerEdit/CMS.pm の 5行目あたりに、青色のコードを追加します。

...前略...
package PowerEdit::CMS;
 
use strict;
use warnings;
use CustomFields::Util qw( save_meta ); 
 
sub _power_edit_entries {
...後略...

4.CMS.pm の修正2

plugins/PowerEdit/lib/PowerEdit/CMS.pm の 81 行目(save_power_edit 関数の中)あたりに、青色のコードを追加します。

...前略...
sub save_power_edit {
    my ($cb, $app, $entry, $org) = @_;
    my $q = $app->param;
    my $id = $entry->id;
    if ($id) {
...中略...
        unless ($q->param('allow_pings')) {
            if ($q->param('allow_pings_' . $id )) {
                $entry->allow_pings(1);
            } else {
                $entry->allow_pings(0);
            }
        }
        unless ($q->param('customfield_cf')) {
            my $meta;
            if ($q->param('customfield_cf_' . $id )) {
                $meta->{cf} = $q->param('customfield_cf_' . $id );
            } else {
                $meta->{cf} = '';
            }
            &save_meta($entry, $meta);
        }
    }
    return 1;
}
...後略...

赤色で示す部分がベースネームに対応します。ベースネームはご自身のカスタムフィールドのベースネームに適宜書き換えてください。

5.見出しのローカライズ

この作業は必須ではありませんが、見出しを日本語で表示したい場合、plugins/PowerEdit/config.yaml に、青色の1行を追加してください。

...前略...
l10n_lexicon:
    ja:
        Power Edit.: 拡張した一括編集画面の保存を有効にします。
        Extended entry: 続き
        EntryProductName: 商品名
...後略...

「EntryProductName」は、2項で追加したth要素にある、「phrase="EntryProductName"」に対応しています。英語表記を変更したい場合は、config.yamlのハッシュキー(EntryProductName)と「phrase="EntryProductName"」の2箇所を変更してください。

6.テキストのカスタムフィールドを複数表示する場合

2項と4項の内容を、必要なカスタムフィールド分、追加してください(ベースネームはそれぞれ異なります)。

Posted by yujiro   このページの先頭に戻る
関連記事
この記事を読んだ人はこんな記事も読んでいます
人気エントリー
Hatena Hot Entries
Hatena Entries
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


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

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

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

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

Now loading...
Introduction
Entries of this Category
Recent Entries
Recent Comments
Recent Trackbacks
QRcode

現在停止中です
携帯電話からこのQRcodeを撮影することで携帯用URLを取得することができます

URI for cellular phones
ギターに入った猫
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner

loading ...
Categories
Monthly Archives
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
クリエイティブ・コモンズ・ライセンス
Powered by
Movable Type 5.12