2011年8月16日

アイテムのカスタムフィールド削除動作を改善する「DeleteAssetWithDeleteCFAssetプラグイン」

Movable Type 5で、アイテムのカスタムフィールド削除と同時に関連アイテムを削除する「DeleteAssetWithDeleteCFAssetプラグイン」を公開します。

1.機能

アイテムのカスタムフィールド削除に連動して、ウェブページやブログ記事の「関連アイテム」も同時に削除します。以下、スクリーンショットで説明します。

ブログ記事の「画像」カスタムフィールドにコーヒーカップの画像(eyes0588.jpg)が登録されているものとします。このとき、右端の「ブログ記事アイテム」にも同じファイル名が表示されています。

ブログ記事編集画面

カスタムフィールドの「画像を削除する」をクリックします。

画像を削除

クリックしたあと、MTのデフォルト状態であれば「ブログ記事アイテム」の「eyes0588.jpg」は削除されませんが、本プラグインを適用することで「ブログ記事アイテム」の表示を削除します。この状態で保存を行えば、該当の画像をブログ記事アイテムから完全に削除します。

削除後の関連アイテム

該当のカスタムフィールドに対応する関連アイテムだけを削除するので、複数のアイテムが登録されている場合でも大丈夫です。

その他、下記の動作も可能です。

  • カスタムフィールドの「画像を選択」をクリックしたときにも、同じカスタムフィールドに登録済みの関連アイテムを削除
  • アイテムの選択・削除を繰り返しても、関連アイテムの表示・非表示が連動します
  • 画像含め、すべてのアイテムに対応

関連アイテムの方から削除した場合、カスタムフィールドのアイテムを非表示にすることはできませんが、保存後にカスタムフィールドはデフォルト機能で削除されるので、連動という意味では問題ないと思います。

このプラグインはMT5.06/MT5.12で動作確認しています。ブラウザはGoogle Chrome/Firefoxで確認しています。

なお、プラグインだけでは機能追加できない箇所があり、MTのプログラムに1行だけ処理を追加する必要があります(詳細は3項)。

2.価格

  • 個人無償版/有償版での非商用利用/Movable Type Open Source:無償
  • 有償版での商用利用:1050円/1サーバ(事前に動作確認してください)

無償でご利用の場合も、プラグインのご利用についてご支援・ご賛同くださる方からの寄付をお待ち申し上げます。

3.プラグインのダウンロード・インストール

下記のリンクをクリックして、プラグインアーカイブをダウンロードします。

DeleteAssetWithDeleteCFAsset_0_01.zip

プラグインアーカイブを展開し、中にある DeleteAssetWithDeleteCFAssetフォルダごと、Movable Type のアプリケーションディレクトリの plugins ディレクトリにアップロードします。

システム管理画面のプラグイン設定画面で、「DeleteAssetWithDeleteCFAsset~」が表示されればインストール完了です。

プラグイン設定画面

動作の確認は3項の修正を行ってから実施してください。

4.ソースコードの修正

addons/Commercial.pack/lib/CustomFields/Util.pmを任意のエディタで開き、_get_htmlというメソッドに赤色の1行を追加します。5.12であれば536行目あたりです。

sub _get_html {
    my ( $key, $tmpl_key, $tmpl_param ) = @_;
    …中略…
    if ( $type_obj->{asset_type} ) {
        my $asset_html = $tmpl_param->{field_value};
        if ( defined($asset_html)
            && ( $asset_html =~ m/\smt:asset-id="(\d+)"/i ) )
        {
            my $asset_id = $1;
            if ( my $asset = MT::Asset->load($asset_id) ) {
                $ctx->stash( 'asset', $asset );
                unless ( defined $image_support ) {
                    eval { require MT::Image; MT::Image->new or die; };
                    $image_support = $@ ? 0 : 1;
                }
                $tmpl->param( 'have_thumbnail', $image_support );
                $tmpl->param( 'asset_id', $asset_id );
            }
            else {
                $tmpl->param( value => '' );
            }

5.注意事項

このプラグインは、ブログ記事・ウェブページに登録されている関連アイテムが必ずカスタムフィールドで使われてることが前提となります。

アイテムのカスタムフィールドを削除したときに関連アイテムは削除したくないという場合は、プラグインを一時的に使用不可にするか、プラグインをアンインストール(pluginsフォルダから削除)してください。

Comments [0] | Trackbacks [0]
Now loading...
ギターに入った猫
IT転職は【Green】Web/インターネット業界の求人に強い転職サイト グリーン
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

Categories
Monthly Archives
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 5.12