TopMovable Typeプラグイン管理画面 > 2009年6月
2009年6月29日

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

June 29,2009 1:33 AM
Tag:[, , ]
Permalink

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項の内容を、必要なカスタムフィールド分、追加してください(ベースネームはそれぞれ異なります)。

Comments [5] | Trackbacks [1]
2009年6月 8日

UnrecognizedTags プラグインを日本語環境で利用する

June 8,2009 12:03 AM
Tag:[, , ]
Permalink

Movable Type のテンプレート上にある不明なタグを管理画面上に一括表示してくれる、UnrecognizedTags プラグインを紹介します。このプラグインは一度インストールして動作しないのでそのまま放置していたのですが、ソースを改変することで動作が確認できました。

UnrecognizedTags プラグイン

で当初、プラグインの紹介記事にしようと思いましたが、タイムリーに「WolaWola - Unrecognized Tags」で記事が修正されていたので、内容を変更して紹介します。プラグインの概要については、「WolaWola - Unrecognized Tags」をご覧ください。

1.日本語環境で利用する場合のカスタマイズ

plugins ディレクトリ配下の UnrecognizedTags/lib/UnrecognizedTags/CMS.pm を修正します。CMS.pm の赤色部分を青色部分のように変更します。

変更前

...前略...
while (my $tmpl = $iter->()) {
    $tmpl->compile;
    if ($tmpl->{errors} && @{$tmpl->{errors}}) {
        #print "Errors in " . $tmpl->id . "'" . $tmpl->name . "' (" . $tmpl->blog_id . ")\n";
        my @msgs = map { ($_->{message} =~ /unrecognized/mi) ? $_->{message} : () } @{$tmpl->{errors}};
        for my $msg (@msgs) {
            my ($tag) = ($msg =~ /^<([^>]+)>/);
            $tags->{$tag} ||= {};
            $tags->{$tag}->{$tmpl->id}++;
        }
        $tmpls->{$tmpl->id} = $tmpl;
        $blogs->{$tmpl->blog_id} ||= MT::Blog->load($tmpl->blog_id);
    }
}
...後略...

変更後

...前略...
while (my $tmpl = $iter->()) {
    $tmpl->compile;
    if ($tmpl->{errors} && @{$tmpl->{errors}}) {
        #print "Errors in " . $tmpl->id . "'" . $tmpl->name . "' (" . $tmpl->blog_id . ")\n";
        my @msgs = map { ($_->{message} =~ /は存在しません/mi) ? $_->{message} : () } @{$tmpl->{errors}};
        for my $msg (@msgs) {
            my ($tag) = ($msg =~ /^<([^>]+)>/);
            $tags->{$tag} ||= {};
            $tags->{$tag}->{$tmpl->id}++;
        }
        $tmpls->{$tmpl->id} = $tmpl;
        $blogs->{$tmpl->blog_id} ||= MT::Blog->load($tmpl->blog_id);
    }
}
...後略...

修正したファイルは必ずUTF-8で保存してください。この変更を行なわないと、プラグインで追加された管理画面には何も表示されません。

2.プラグインの動作確認方法

任意のテンプレートに <mt:hoge /> などの存在しないテンプレートタグを書き、システム管理画面の「ツール」→「不明なタグ」を選択してください。下のように表示されればOKです。

不明なタグ

CMS.pm の設定文字列を変更すれば、他のなエラーをひっかけられるかもしれません。

Comments [2] | Trackbacks [1]
Now loading...
ギターに入った猫
掲載広告募集
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

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

AMN
Categories
Monthly Archives
2020年
2019年
2018年
2017年
2016年
2015年
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
2005年
2004年
2003年
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
Powered by
Movable Type 6.0.3