web-dev-qa-db-ja.com

Drupal 7ビューの公開フィルター:-Any-の削除とアイテムの並べ替え

Drupal 7.21とビュー3.7を使用しています。日付モジュールがインストールされています。ビューの1つに、公開年としてドロップダウン年を指定したいのですが、正常に機能しています。 -Any- 2012 2013として選択肢がありますが、私は-Any-を削除してアイテムを並べ替えたいので、2013 2012のようになります。そのため、hook__form_views_exposed_form_alterフックの使用を提案するいくつかのブログと問題も確認しました http://eureka.ykyuen.info/2012/11/22/drupal-7-customize-the-exposed-filter- selection-list / このブログは提案されましたが、私のフォームオプションでは、このブログで述べられていないオプションもリストされていません。

公開したいフィルターを入手するのを手伝ってくれる人はいますか?ありがとうございました

4
cissharp

公開されたフィルターフォームにhook_form_alterを実装する必要があります(開発が有効になっている場合は、dpmを使用してフォームの名前を見つけます)。フォームのalter sort(または単に元に戻す)を使用して、日付の配列を削除し、「-any-」を削除します。ちなみに、「-any-」を削除するために、CSSを使用することもできます。CSSを使用すると、必要な場合にすぐに元に戻すことができます。

過去に使用した同様のコードを必要に応じて編集したので、次のようなものが必要になります。

function mymodule_form_alter(&$form, &$form_state, $form_id) {

  switch ($form_id) {
    case 'views_exposed_form':
      if( !empty($form['#id']) && $form['#id'] == 'views-exposed-form-myview') {
        // This is the myview view

      // Remove the start date label
      if( !empty($form['field_sw_date_value']['min']['#date_label_position']) )
        $form['field_date_value']['min']['#date_label_position'] = 'none';

      // Remove the end date label
      if( !empty($form['field_sw_date_value']['max']['#date_label_position']) )
        $form['field_date_value']['max']['#date_label_position'] = 'none';
      break;
    }
}
6
rreiss

hook_form_alterで変更しても問題はありませんが、公開されたフィルター値が動的に作成されない場合は、フォームを変更する必要はありません。

  1. 公開されたフィルター「フィルター基準の構成:」で「必須」にチェックを入れます。
  2. 「いずれか」を選択し、ユーザーが選択するすべてのアイテムを強調表示します(動的に作成された場合、これは機能しません!)
  3. 「リストを選択したアイテムに制限する」にチェックを入れます。

しかし、私の意見では、-Any-の値を削除すると、UXにとっては好ましくないため、選択した別のデフォルトオプションを追加する必要があります。

2