カスタムフィールドテンプレートでデータをグループ化と表示非表示を追加する。
カスタムフィールドテンプレートプラグインには非常に多彩なオプションがありますが、そのオプションの説明がとても少ないです。
その中のこっそりした機能の一つにグループ化というのがあります。
これはグループ化した部分をfieldsetで囲む機能で
[グループ1]
type = fieldset_open
legend=ぐるーぷ
[項目1]
type = text
[グループ1]
type = fieldset_close
のようにfieldset_open~fieldset_closeまでの間の項目がグループ化されます。
そしてグループ化したついでにそのグループをクリックで表示オンオフにしようというカスタマイズをします。
まずcustom-field-template.phpを変更するので念のためバックアップはとっておいてください。
custom-field-template.phpの2090行目あたりに
else if( $data['type'] == 'fieldset_open' ) { if ( !empty($data['class']) ) $class = ' class="' . $data['class'] . '"'; if ( !empty($data['style']) ) $style = ' style="' . $data['style'] . '"';
とあるので、その下に
if(!empty($data['class']) && !empty($data['hide'])){ if($data['hide'] == 'show'){$dsp = '表示する';}else{$dsp = '隠す';} $out .= "<span onclick='if(jQuery(\".{$data['class']}\").css(\"display\") == \"none\"){jQuery(this).text(\"隠す\");}else{jQuery(this).text(\"表示\");} jQuery(\".{$data['class']}\").toggle(\"slow\");'>$dsp</span>"; }
と追加してください。
・使い方。
fieldset_openを設置するときオプションとして
hide = (show/hide)
が追加されます。showだと表示するメッセージが、hideだと隠すメッセージがでた状態で出力されます。
fieldset_openの実際の表示非表示には影響されないので気をつけてください。
また、fieldset_openに必ずクラスが必要です。classがない場合は表示非表示の文字も表示されません。
・バグ?
fieldset_openにclassを設定して、他のfieldset_openにclassを設定しないと、前のclassを受け継いでしまいます。
バグなのでしょうか?とりあえずfieldset_openすべてにclassを設置すれば問題ないです。