公開されたフィルタのオプションを制御するにはどうすればよいですか?

私は、私のメンバーリストビュー(私は国を格納するためにアドレスフィールドモジュールを使用しています)のための露出したフィルタ
“国”を持っています。
私は、メンバーがいる私の露出したフィルターの国だけを表示したいと思います。選択した国でフィルタを手動で制限することができます。

どちらが最善の選択肢ですか?

  • theming views-exposed-form.tpl.php
  • using hook_form_alter()
  • hiding some fields with CSS
ベストアンサー

私はちょうど私のカスタムモジュールのためのビューで公開しているいくつかのデータに似たようなことをしました(ビューがデータを取得していても同じプロセスです)。

可能な限り最も効率的な/簡単な方法でこれを行うには、独自のフィルターハンドラーを作成する必要があります。

本当に簡単な例:

<?php
class custom_handler_filter_countries extends views_handler_filter_string {
  /**
   * Shortcut to display the exposed options form.
   */
  function value_form(&$form, &$form_state) {
    $form['value'] = array(
      '#type' => 'select',
      '#title' => t('Countries'),
      '#options' => function_that_returns_options_you_want(),
    );

    return $form;
  }
}
?>

次に、モジュールの.infoファイルで、このクラス(この例では
‘custom_handler_filter_countries.inc’)を含むファイルを.infoファイルのファイル配列(
files [] =
includes/custom_handler_filter_countries.inc
)。

特定のビューにデフォルトハンドラの代わりにこのビューハンドラを使用させるには、ハンドラを hook_views_pre_view()
と思います。あなたのサイトでは、通常のハンドラはすでにAddress
Fieldで定義されているので、フィルタハンドラをオーバーライドする必要があります。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です