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

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

Posted at June 29,2009 1:33 AM
Tag:[MovableType, Plugin, PowerEdit]

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

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

変更後(赤枠部分を追加)
PowerEdit プラグイン(変更後)

時間の都合上、解説を複数回に分け、今回はテキストのカスタムフィールドを表示する方法を示します。なお、アップロード系のカスタムフィールドについては対象外です。

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

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

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

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

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

2.entry_table.tmpl の編集

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

...前略...
<mt:ignore>===================================</mt:ignore>
        <mt:if name="is_power_edit">
            <tr>
                <th><__trans phrase="Text"></th>
                <td colspan="9"><textarea style="width:760px" type="text" name="text_<$mt:var name="id"$>"><mt:entryBody convert_breaks="0" escape="html" /></textarea></td>
            </tr>
            <tr>
                <th><__trans phrase="Extended entry"></th>
                <td colspan="9"><textarea style="width:760px" type="text" name="text_more_<$mt:var name="id"$>"><mt:entryMore convert_breaks="0" escape="html" /></textarea></td>
            </tr>
<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></td>
            </tr>
</mt:ignore>
            <tr>
                <th><__trans phrase="EntryProductName"></th>
                <td colspan="9"><textarea style="width:760px" type="text" name="customfield_cf_<$mt:var name="id"$>"><mt:entryProductName escape="html" /></textarea></td>
            </tr>
        </mt:if>
</mt:cmscontext>
<mt:ignore>===================================</mt:ignore>
...後略...

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

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

3.PowerEdit.pl の修正1

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

...前略...
use MT::Util qw( asset_cleanup );
use MT::I18N qw( first_n_text );
use CustomFields::Util qw( save_meta ); 
 
our $VERSION = '0.07';
...後略...

3.PowerEdit.pl の修正2

plugins/PowerEdit/PowerEdit.pl の 180 行目(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;
}
...後略...

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

4.見出しのローカライズを行いたい場合

見出しを日本語で表示したい場合、エレガントな方法ではありませんが、lib\MT\L10N/ja.pm の最後から4行目あたり(「);」の直前の行)に下記のような1行を追加してください。

'EntryProductName', '商品名',

この作業は必須ではありません。

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

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

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


トラックバック

カスタムフィールドを一括編集できるプラグイン/PowerEdit from MovableTypePC携帯カスタマイズ
前回より、話しは続きます。 ▼ Movable Type 管理画面で一括編集プラグイン 前回のこのPowerEditプラグインによるカスタマイズで、一括編... [続きを読む]

Tracked on September 18, 2009 2:14 PM
コメント

はじめまして。
いつもMTのカスタム情報参考にさせて頂いています。
ありがとうございます。

今回、MT5でPowerEditを利用し、カスタムフィールドを一括編集するために記載の内容を参考にさせて頂こうとしたところ、MT5バージョンのプラグインではファイルの内容が若干異なり、記載されている内容を参考にすることができませんでした。

もし可能でしたら、MT5バージョンでご教授頂けると幸いです。
どうぞ、宜しくお願い致します。

[1] Posted by nabe : September 3, 2010 10:36 PM

>nabeさん
はじめまして。
ご質問の件ですが、以下のURLでエントリー致しましたのでご確認ください。
http://www.koikikukan.com/archives/2010/09/07-225555.php

カスタムフィールドに設定した値の保存まで確認済みですが、一部の環境でエラーが発生したので、もし正常に動作しなかったらすいません。
それではよろしくお願い致します。

[2] Posted by yujiro logo : September 7, 2010 10:57 PM

>yujiroさま

早速のご対応、ありがとうございます。
こちらのMT5の環境でも、動作確認ができました。
とても使い勝手がよくなり、更新が容易になりました。
ありがとうございました!

[3] Posted by nabe : September 8, 2010 8:38 PM

>nabeさん
こんばんは。
ご連絡ありがとうございました。
無事に動作したようで良かったです。
ではでは!

[4] Posted by yujiro logo : September 13, 2010 1:35 AM

はじめまして。
いつもMTサイト運営の参考にさせていただいております。
書籍もわかりやすくて大変助かっております。
ありがとうございます。

今回カスタムフィールドのテキストを一括編集できるようになりますが、
ドロップダウン形式の場合などの編集方法を教えていただけると幸いです。

お手隙の時にでも公開していただけると助かります。
どうか、よろしくお願いいたしますm(_ _)m

[5] Posted by T-Moki : April 27, 2011 1:33 AM
コメントする
greeting

*必須

*必須(非表示)


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

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

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

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