web-dev-qa-db-ja.com

カスタムデータセットを表示または非表示

DrupalでCIVCRMモジュールを使用しており、Drupal登録フォーム用に複数のカスタムデータセットを作成しました。

問題は、4つのメンバーシップレベルがあり、各レベルにカスタムデータセットがあるため、他のデータセットを非表示にして、選択したメンバーレベルに関連するデータセットのみを表示する必要があることです。

管理を通じてそれを行う方法はありますか?.

前もって感謝します。

2
Senad Meškin

CiviCRMの一部のフォーム(例:コントリビューション/メンバーシップ)には、組織メンバーシップなどの表示/非表示オプションがある場合がありますが、通常、管理インターフェイスを使用して実行することはできません。jQueryを使用してプログラムで実行することをお勧めします。

別のオプションは、 webform および webform_civicrm Drupalモジュールを使用してカスタムフォームを作成することです。最新バージョンのwebform_civicrmを使用すると、次のことが可能になります。ほとんどの投稿/メンバーシップフォームをほぼ書き直します。Webフォームには、条件付きでフィールドを表示/非表示にする方法があります。

それをjQueryの方法で実行したい場合は、それがDrupalフォーム(例:ユーザー登録フォーム)であるか、CiviCRMフォーム(貢献/メンバーシップフォーム)であるかに応じて) Drupalテーマ、またはCiviCRMテンプレートのjavascriptスニペット。

たとえば、それがDrupal形式の場合、sites/example.org/themes/mytheme/js /custom.jsと同等のものに入れることができます。

/**
 * Show/hide the appropriate custom fields for a membership level.
 */
Drupal.behaviors.myThemeToggleMembershipFields = {
  attach: function (context, settings) {
    $('#my_membership_type_input').change(function() {
      var v = $(this).val();

      if (v == 1) {
        $('..fields for type 1..').show();
        $('.. other fields..').hide();
      }
      else if (v == 2) {
        // etc.
      }          
    });
  }
})(jQuery);
2
bgm