Thay đổi lựa chọn mặc định cho bộ lọc hiển thị Lượt xem 2


7

Tôi có một bộ lọc được hiển thị trong Chế độ xem của mình cho phép người dùng chọn giữa hai loại nội dung khác nhau. Giá trị mặc định cho bộ lọc được hiển thị dường như được chọn bởi bất kỳ loại nội dung nào đến trước theo thứ tự bảng chữ cái. Vì vậy, nếu tôi cho phép người dùng chọn giữa các loại nội dung "Băng" và "Bài hát", thì mặc định là "Băng". Tôi muốn thay đổi giá trị mặc định này thành một loại nội dung khác ("Bài hát" trong ví dụ ở đây). Tôi không thể tìm thấy một tùy chọn trong giao diện Lượt xem cho việc này. Tôi có phải làm điều này thông qua hook_form_alter? Nếu vậy, làm thế nào chính xác tôi sẽ làm điều đó?

Câu trả lời:


5

Vì vậy, tôi đã thử cách mà @David Lanier đề xuất, nhưng không thể nào quấn đầu quanh nó được. Vì vậy, tôi đã quay trở lại những điều cơ bản của Drupal và thử nó từ hook_form_alter()phương pháp này. Sau một số khắc phục sự cố, tôi cũng tìm thấy một bài đăng về việc thay đổi giá trị bộ lọc Chế độ xem mặc định . Tôi đã thực hiện cùng một cách tiếp cận và làm cho nó hoạt động. Dưới đây là mã được sử dụng, với một vài sửa đổi để đưa ra nội dung cụ thể trên trang web của tôi. Như mọi khi, hãy chắc chắn thay thế "tên mô-đun" bằng tên của mô-đun của bạn.

function modulename_form_alter(&$form, $form_state, $form_id) {
 // is this the right form?
 if($form['#id'] == 'name-of-the-views-form-displayed') {
   if (empty($_GET['label-of-the-filter']))  {
    $form_state['input']['label-of-the-filter'] = 'default-value-for-filter';
   }
  }
}

Chỉ cần thay thế name-of-the-views-form-displayedbằng, bạn đoán, tên của dạng xem bạn muốn thay đổi. Cách dễ nhất để tìm thấy điều này là kiểm tra nguồn của Chế độ xem trong trình duyệt (Tôi yêu Firebird vì điều này) và tìm formphần tử, sau đó lấy idthuộc tính của nó . Để tìm tên của bộ lọc và giá trị bạn nên đặt, hãy thay đổi các bộ lọc và thực hiện "tìm kiếm". Nhìn vào thanh địa chỉ và bạn sẽ thấy các giá trị bạn cần sử dụng ở đây làm tham số trong url.

Hy vọng điều này sẽ giúp những người khác xung quanh vấn đề này quá!


Xin lỗi vì sự cần thiết của luồng, nhưng tôi đã thử giải pháp của bạn và nó thực sự thay đổi những gì được chọn trước trong trường đầu vào - nhưng chế độ xem thực tế đã được hiển thị (chế độ xem không phải là AJAX). Đã kết thúc việc thêm một đoạn mã JS ở chân trang của Chế độ xem chọn giá trị <Any> nếu quản trị viên được chọn, sau đó gửi biểu mẫu dạng xem làm mới trang. Thô nhưng làm việc cho bây giờ
đỏ

2

Tôi đã làm theo cách này

function hook_form_views_exposed_form_alter(&$form, &$form_state) {

  global $user;
  $account = user_load($user->uid);
  $term = taxonomy_term_load($account->field_user_industry[LANGUAGE_NONE]['0']['tid']);

  unset($form['field_event_industry_tid']['#size']);
  if ($form['#id'] == 'views-exposed-form-events-events-pane') {
    // get the view argument if defined
    $term_filter=$_GET;
    unset($term_filter['q']);
    $term_arg = $term_filter;
    if (!empty($term_arg)) {
      $terms = $term_arg;
    }

    // change our input as required
    if (isset($terms)) {
      $form_state['input']['field_event_industry_tid'] = $terms['field_event_industry_tid'];
    }
    else{
      $form_state['input']['field_event_industry_tid'] = $term->tid;
    }
  }
}

Trong trường hợp của tôi, tôi đã phải thay đổi giá trị mặc định theo truy vấn, nhưng nếu không, tôi sử dụng giá trị tôi muốn, cách này hoạt động hoàn hảo!


1

Khi bộ lọc được hiển thị, trong các tùy chọn cấu hình cho bộ lọc, bạn sẽ thấy các hộp kiểm cho từng loại nội dung trong trang web của mình. Những cái mà bạn kiểm tra ở đây là những cái được chọn theo mặc định khi người dùng cuối nhìn thấy chế độ xem.

Nếu bạn chỉ cần một số loại nội dung của mình có sẵn trong biểu mẫu và chỉ một số loại nội dung được chọn trước, bạn sẽ cần phải làm một cái gì đó như thế này: Thêm hai bộ lọc loại nội dung:

  • Bộ lọc 1 = chỉ các loại nội dung nên có sẵn. Đừng để lộ bộ lọc này.
  • Bộ lọc 2 = bộ lọc tiếp xúc. Chọn những cái ở đây nên được chọn trước theo mặc định.

Giống như tôi có một bộ lọc tiếp xúc được thu hẹp thành hai tùy chọn, nhưng tôi muốn cái thứ hai được chọn theo mặc định thay vì cái thứ nhất.
Chaulky

Một trong những gợi ý của tôi ở trên vẫn nên làm việc cho bạn. Bạn có thể cần thử đề xuất thứ 2 của tôi bằng hai bộ lọc: bộ lọc thứ nhất để thu hẹp các tùy chọn khả dụng, bộ lọc thứ hai để đặt mặc định được chọn theo mặc định.
David Lanier

Tôi sẽ dùng thử, nhưng tôi không thực sự thấy bạn đang đi đâu với điều này, tôi có thể cần làm rõ hơn sau khi thử nghiệm các đề xuất của bạn.
Chaulky

Làm cách nào để sử dụng bộ lọc để chọn mặc định được chọn? Tôi đã có một bộ lọc thu hẹp các loại nội dung được phép và một bộ lọc được hiển thị, cho phép chúng chọn giữa hai loại được phép. Nhưng làm thế nào để giúp chọn một giá trị mặc định?
Chaulky

1

Có thể bạn đã có câu trả lời, nhưng đây là cách tôi giải quyết. Nếu bạn chỉnh sửa Bộ lọc trong Chế độ xem, sẽ có tùy chọn " Danh sách giới hạn đối với các mục đã chọn ". Tôi đã kiểm tra tùy chọn đó và Giá trị mặc định đã được đặt lại, vì vậy bây giờ Giá trị mặc định của bộ lọc là Tất cả (với thẻ Bất kỳ).


0

Xem dưới cùng của bài viết tại:

http://realguess.net/node / 28

Nếu bạn không chọn bất kỳ lựa chọn nào trong Giới tính khách hàng và kiểm tra Tùy chọn Bộ lọc được hiển thị này là tùy chọn và sẽ có thêm tùy chọn để cho phép nó không được đặt. hộp, sau đó sẽ là sự lựa chọn mặc định. Nếu bạn chọn mục Nam, thì lựa chọn mặc định của bạn sẽ là Nam khi chế độ xem được hiển thị.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.