Làm cách nào để đặt chế độ xem của tôi trả về 404 bằng Global: Null trong các bộ lọc theo ngữ cảnh?


14

Hành vi Drupal tiêu chuẩn là vượt qua tất cả các đối số thông qua, cho dù họ có yêu cầu hay không. Đôi khi hành vi này là mong muốn. Tuy nhiên, tôi cần trả về 404 cho bất cứ thứ gì ngoại trừ chuỗi truy vấn.

Ví dụ về vấn đề http://drupal.org/project/modules http://drupal.org/project/modules/google.com <- Điều này sẽ trả về 404; 200 cho. Nội dung trùng lặp hình phạt!

Các quan điểm 404 mô-đun giả định rằng theo mặc định bạn không muốn tranh cãi qua. Tuy nhiên không có phiên bản D7 của mô-đun.

Nhưng trang dự án nói rằng 404 cho lượt xem cũng có thể được thực hiện bằng cách đặt Global: Null theo Argument.

Rõ ràng trong D7, "đối số" hiện là "bộ lọc theo ngữ cảnh", nhưng tôi không chắc chắn nên thêm cài đặt nào vào bộ lọc theo ngữ cảnh Toàn cầu: null để có kết quả mong muốn.

Bất kỳ trợ giúp sẽ được đánh giá cao.

Câu trả lời:


22

Trong các bộ lọc theo ngữ cảnh, chọn Thêm ; trong hộp thoại xuất hiện, chọn Global: Null .

ảnh chụp màn hình

Nhấp vào Thêm và định cấu hình bộ lọc theo ngữ cảnh .

Trong hộp thoại xuất hiện tiếp theo, trong bộ trường Khi giá trị bộ lọc khả dụng hoặc được cung cấp mặc định , kiểm tra Chỉ định tiêu chí xác thực , chọn - Xác thực cơ bản - cho Trình xác thực và chọn Hiển thị "Không tìm thấy trang" cho Hành động để thực hiện nếu giá trị bộ lọc không xác nhận . Trong fieldset More , kiểm tra Fail xác nhận cơ bản nếu bất kỳ đối số nào được đưa ra .

ảnh chụp màn hình

Tôi đã thử nghiệm nó với chế độ xem "Bài viết" mà tôi đã tạo và nó hoạt động.

ảnh chụp màn hình

ảnh chụp màn hình

Đối số "Toàn cầu: Không" phải là đối số cuối cùng. Ví dụ: nếu bạn cần ID người dùng, trước tiên, bạn thêm nó làm đối số và sau đó thêm đối số "Toàn cầu: Không".

Tôi đã thay đổi chế độ xem "Bài viết" để chấp nhận ID người dùng làm đối số, được sử dụng để lọc danh sách các nút bài viết. Khung nhìn vẫn hoạt động, vì nó không chấp nhận một đối số phụ.

ảnh chụp màn hình

ảnh chụp màn hình


1
Điều này sẽ trả về 403 không phải lỗi mã 404. Thay vào đó, chọn tùy chọn "Hiển thị" Trang không tìm thấy "
Eugene Fidelin

Trong một chủ đề trên DO tôi thấy ai đó đề nghị sử dụng arg (1) == NULL; trong mã xác nhận php. Điều này tốt hơn hay khá nhiều điều tương tự?
Nigel Waters

1
@EugeneFidelin Tôi đang chỉnh sửa màn hình "chính" và tôi không thấy tùy chọn Hiển thị "Không tìm thấy trang" . Tôi đã sửa câu trả lời của mình.
kiamlaluno

@NigelWaters Quên câu trả lời trước của tôi. :)Tôi đã chỉnh sửa màn hình hiển thị sai và chế độ xem không hoạt động như bình thường. Không cần sử dụng mã PHP để xác thực đối số; xem câu trả lời cập nhật
kiamlaluno

Tôi chưa có đủ điểm để bình luận - vì vậy hãy đăng lên đây để nói lời cảm ơn tới @kiamlaluno. Hoạt động tuyệt vời và một cái gì đó tôi đã đập đầu vào một lúc.
Blue Waters

1

Bạn có thể làm điều này bằng cách sử dụng các khung nhìn ngoài chức năng của hộp. Trong mọi cài đặt bộ lọc theo ngữ cảnh, bạn có thể thấy hộp kiểm "Chỉ định tiêu chí xác thực" để xem thêm cài đặt.

Sau đó, bạn có thể chọn "trình xác nhận" dựa trên các điều kiện xem của bạn. Nếu bạn muốn tùy chỉnh xác thực thì chọn mã php. Trả về Đúng hoặc Sai trong mã php dựa trên các điều kiện xác thực của bạn.

Cuối cùng chọn "Hành động thực hiện" khi Quyền truy cập hiển thị bị từ chối! Xem ảnh chụp màn hình dưới đây cho bộ lọc theo ngữ cảnh nid.

nhập mô tả hình ảnh ở đây


Mã php mà tôi thêm là gì?
Nigel Waters

Tôi chỉ sử dụng bộ lọc theo ngữ cảnh Toàn cầu: null
Nigel Waters

3
KHÔNG BAO GIỜ SỬ DỤNG MÃ PHP TRONG XEM hoặc BẤT K TOOL CÔNG CỤ UI KHÁC !!!
hugronaphor 6/2/2015
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.