アイテムのカスタムフィールド削除動作を改善する「DeleteAssetWithDeleteCFAssetプラグイン」
Movable Type 5で、アイテムのカスタムフィールド削除と同時に関連アイテムを削除する「DeleteAssetWithDeleteCFAssetプラグイン」を公開します。
1.機能
アイテムのカスタムフィールド削除に連動して、ウェブページやブログ記事の「関連アイテム」も同時に削除します。以下、スクリーンショットで説明します。
ブログ記事の「画像」カスタムフィールドにコーヒーカップの画像(eyes0588.jpg)が登録されているものとします。このとき、右端の「ブログ記事アイテム」にも同じファイル名が表示されています。
カスタムフィールドの「画像を削除する」をクリックします。
クリックしたあと、MTのデフォルト状態であれば「ブログ記事アイテム」の「eyes0588.jpg」は削除されませんが、本プラグインを適用することで「ブログ記事アイテム」の表示を削除します。この状態で保存を行えば、該当の画像をブログ記事アイテムから完全に削除します。
該当のカスタムフィールドに対応する関連アイテムだけを削除するので、複数のアイテムが登録されている場合でも大丈夫です。
その他、下記の動作も可能です。
- カスタムフィールドの「画像を選択」をクリックしたときにも、同じカスタムフィールドに登録済みの関連アイテムを削除
- アイテムの選択・削除を繰り返しても、関連アイテムの表示・非表示が連動します
- 画像含め、すべてのアイテムに対応
関連アイテムの方から削除した場合、カスタムフィールドのアイテムを非表示にすることはできませんが、保存後にカスタムフィールドはデフォルト機能で削除されるので、連動という意味では問題ないと思います。
このプラグインはMT5.06/MT5.12で動作確認しています。ブラウザはGoogle Chrome/Firefoxで確認しています。
なお、プラグインだけでは機能追加できない箇所があり、MTのプログラムに1行だけ処理を追加する必要があります(詳細は3項)。
2.価格
価格:\3,000-(税別)/1インストールMT(購入前に必ず動作確認してください)
3.プラグインのダウンロード・インストール
下記のリンクをクリックして、プラグインアーカイブをダウンロードします。
プラグインアーカイブを展開し、中にある 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フォルダから削除)してください。
- MTのアイテムアップロード時に記事と関連付ける「EntryAssociaterWithUploadAssetプラグイン」
- Movable Typeでimg要素からアイテム登録できる「AssetAppenderByURLプラグイン」
- Movable Typeでアップロードした画像を回転させる「ImageRotatorプラグイン」
- Movable Typeで画像のExif情報を削除する「DeleteExifプラグイン」
- Movable Typeの記事編集画面に登録アイテムを表示する「ShowAssetImageプラグイン」バージョンアップ
- Movable Typeでアイテム選択画面の表示件数を変更できる「AssetLimitPerPageChangerプラグイン」
- Movable Typeのアイテム編集画面に削除ボタンを表示する「DeleteAssetButtonプラグイン」
- Movable TypeでアイテムIDを管理画面に表示する「AssetIDViewerプラグイン」(MT5.0x用)
- Movable Typeの記事編集画面に登録アイテムを表示する「ShowAssetImage」プラグイン
- Movable Typeのアイテム一覧にフォルダを表示する「AssetFolderViewerプラグイン」