PowerCMSで記事の編集画面のカスタムフィールドの表示非表示を強制指定する

投稿日: 更新日:

なんか久しぶりにやったらやり方を忘れつつあるのに気付いたのでメモ。

例えは、記事のカスタムフィールド「ほげ」(ベースネーム:hoge)があるとして、これを記事の編集画面にて強制的に表示する場合を想定する。

指定は、「ほげ」の所属するブログの「PowerCMS設定>管理画面カスタマイズ設定」へのコードの設定により行う。

具体的には、次のコードを入力・保存する。

<mt:if name="request.__mode" eq="view">
    <mt:if name="request._type" eq="entry">
<script>
jQuery(function(){
 jQuery('[name="custom_prefs"][value="customfield_hoge"]').prop('checked', true);
 jQuery('#customfield_hoge-field').show();
 jQuery('#customfield_hoge-field').removeClass('hidden');
});
</script>
    </mt:if>
</mt:if>

次のコードで、「表示オプション」上の「ほげ」のアクティブ/非アクティブを指定している。

jQuery('[name="custom_prefs"][value="customfield_hoge"]').prop('checked', true);

次のコードで、入力項目の表示非表示を指定する。

 jQuery('#customfield_hoge-field').show();
jQuery('#customfield_hoge-field').removeClass('hidden');

ちなみに、逆に強制非表示としたい場合は次のように指定する。

 jQuery('[name="custom_prefs"][value="customfield_hoge"]').prop('checked', false);
jQuery('#customfield_hoge-field').hide();
jQuery('#customfield_hoge-field').addClass('hidden');

また、JSのコードを囲んでいるCMSテンプレートタグは、JSコードが出力される対象画面を、記事の新規作成/編集画面に限定している。

<mt:if name="request.__mode" eq="view">
<mt:if name="request._type" eq="entry">
...
</mt:if>
</mt:if>

なお、テンプレートの予約変数requestは画面のURLのクエリを取得するもの。つまり、画面の種類をクエリの値で判断している。

なので、条件判断のeqに指定した値を変更する事で、コードを適用したい画面を任意に指定できる。
例えばページの編集画面に限定してJSコードを出力したければ、次のようにrequest._type eq="entry" のところを、eq="page" と書き換える事で可能。

<mt:if name="request.__mode" eq="view">
<mt:if name="request._type" eq="page">
[出力したいコードをここに書く.]
</mt:if>
</mt:if>

関連するタグ

PowerCMS5.xx, PowerCMS6.xx, 管理画面カスタマイズ設定, 表示オプション