Làm cách nào để sử dụng bộ lọc theo ngữ cảnh HOẶC?


18

Sau khi duyệt mạng và SE một lúc, tôi thấy không có giải pháp nào tốt để kết hợp 2 contextual filtersvới OR (thay vì AND mặc định).

Bài đăng này đề cập đến một vụ hack PHPbài đăng này có một số liên kết đến một vấn đề nêu rõ sự thay đổi gần đây về lượt xem 7.x-3.1 . Nó cũng đề cập đến việc sử dụng hook_views_query_alter(&$view, &$query)để sửa đổi quan điểm.

Có ai có một ví dụ làm việc hoặc một giải pháp tốt hơn?


Tôi không nghĩ có một giải pháp tốt hơn như bây giờ. Như đã nói trong các chủ đề bạn đã chỉ ra, đó là một vấn đề đang diễn ra rõ ràng. Tôi đã vấp phải vấn đề tương tự trong tuần này và phải tìm cách giải quyết với các tệp đính kèm. Nhưng sau đó, nó không đưa ra một danh sách hỗn hợp mà là hai danh sách được kết nối, không phù hợp với tất cả các nhu cầu.
Countzero

Câu trả lời:



7

Các chủ đề bình luận bắt đầu ở đây mô tả một cách giải quyết hiệu quả. MotoTribe liên kết với cùng một chủ đề, nhưng tại thời điểm câu hỏi của anh ấy, không có ví dụ hoạt động trên trang đó. Bây giờ có, như sau:

Trong mô-đun của bạn, thực hiện hook_views_api():

function MODULENAME_views_api() {
  return array(
    'api' => 3,
  );
}

Sau đó, thêm một tệp mới vào mô-đun của bạn có tên MODULENAME.view.inc và thực hiện hook_views_query_alter():

function MODULENAME_views_query_alter(&$view, &$query) {
  if ($view->name == 'whatever_your_view_is_called') {
    $query->where[0]['type'] = 'OR';
  }
}

Cũng cần lưu ý về cảnh báo này:

Rõ ràng, bộ lọc "Nội dung: Đã xuất bản (Có)" đi kèm với mọi Chế độ xem được coi là một phần của cùng một nhóm bộ lọc với các bộ lọc theo ngữ cảnh (nhóm 0). Vì vậy, để làm cho chế độ xem của tôi chỉ hiển thị các nút được xuất bản thuộc bất kỳ nhóm nào được chỉ định bởi các bộ lọc theo ngữ cảnh (đã xuất bản AND (arg1 OR arg2 OR ...)), tôi đã phải chuyển "Nội dung: Đã xuất bản (Có)" vào một nhóm bộ lọc mới (sử dụng hộp thoại "Và / Hoặc, Sắp xếp lại"). Lưu ý rằng UI không hiển thị bộ lọc "Nội dung: Đã xuất bản (Có)" sau khi tôi chuyển nó sang một nhóm mới (không có bất kỳ nhóm nào khác), nhưng trong đối tượng truy vấn được truyền vào hook_views_query_alter()nó đã di chuyển nó từ nhóm 0 vào nhóm 1, khiến mã trong các hàm trên không còn ảnh hưởng đến nó nữa.


1
Ít nhất là tốt hơn để diễn giải sự liên quan của các tham chiếu đến câu hỏi của OP. Liên kết chỉ trả lời được khuyến khích vì liên kết có thể không tồn tại.
Triskelion

@Triskelion: Ah, bạn hoàn toàn đúng. Tôi đã chỉnh sửa phản hồi của mình để khắc phục điều đó.
coredumperror

4

Có một mô-đun thay đổi trình xử lý Chế độ xem để tạo bộ lọc theo ngữ cảnh được sử dụng với OR thay vì AND: Chế độ xem theo ngữ cảnh HOẶC


Tôi muốn tạo chế độ xem với nội dung từ "người dùng hiện tại" + "Nội dung từ người dùng được gắn cờ (người dùng hiện tại đã gắn cờ bằng cờ theo dõi [người dùng])"
Umair

2

Tình hình với Bộ lọc theo ngữ cảnhNhóm bộ lọc thực sự ảm đạm. Đây là chủ đề về Do about toppic này, có cùng một giải pháp như được nêu bởi @CoreDumpError.

https://drupal.org/node/1451218

Ngoài ra, đây là một mô-đun mà thể giúp giải quyết mâu thuẫn lọc ngữ cảnh và tiếp xúc với ... Xem Lọc Harmonizer

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.