Trong Drupal 9, tôi có Chế độ xem được gọi là Tin tức.
Chế độ xem được hiển thị tại đường dẫn sau:
/Tin tức
Tôi có thể chỉnh sửa nó theo đường dẫn sau:
/admin/cấu trúc/lượt xem/xem/tin tức/chỉnh sửa
Nó có bộ lọc Ngữ cảnh sau:
Nguồn dữ liệu nội dung: Loại nội dung
Các giá trị bộ lọc theo ngữ cảnh được cung cấp bởi URL.
Khi giá trị bộ lọc là KHÔNG PHẢI trong URL: Cung cấp giá trị mặc định
Loại: đã sửa
Giá trị cố định: tất cả các
Giá trị ngoại lệ: tất cả các
Nếu giá trị này được nhận, bộ lọc sẽ bị bỏ qua; tức là "tất cả các giá trị"
Điều này hoạt động tốt cho các loại nội dung như mạo từ
và bài viết trên blog
.
Khi Chế độ xem được hiển thị cho đường dẫn /tin tức/bài viết
, bộ lọc theo ngữ cảnh chỉ hiển thị Loại nội dung mạo từ
.
Khi Chế độ xem được hiển thị cho đường dẫn /tin tức/blog_post
, bộ lọc theo ngữ cảnh chỉ hiển thị Loại nội dung bài viết trên blog
.
Càng xa càng tốt.
Bây giờ, khách hàng có một loại nội dung tùy chỉnh được gọi là "Video Youtube" với tên máy youtube_video
.
Khi Chế độ xem này được hiển thị cho đường dẫn /tin tức/youtube_video
. bộ lọc theo ngữ cảnh chỉ hiển thị Loại nội dung youtube_video
.
Nhưng khách hàng muốn đường dẫn được /tin tức/video
.
Những lựa chọn của tôi là gì?
Một số ràng buộc:
- Khách hàng chắc chắn muốn con đường trở thành
/tin tức/video
, và không giống như /news?type=video
.
- Tôi không nghĩ rằng nó tầm thường để phù hợp
/tin tức/foo
và thay thế quán ba
vì foo
làm đầu vào cho bộ lọc theo ngữ cảnh.
- Tôi biết cách sử dụng các tham số vị trí trong một tuyến đường, nhưng tôi không nghĩ rằng mình có thể dễ dàng ghi đè lên tuyến đường đó chỉ vì
/tin tức/foo
trong khi vẫn duy trì bộ lọc theo ngữ cảnh giống như đối với các loại nội dung khác.
Một số linh hoạt:
- Trang web Drupal 9 hoàn toàn mới và tôi sắp di chuyển nội dung từ Drupal 7 qua API Di chuyển, vì vậy nó khả thi để thay đổi tên máy của
youtube_video
loại nội dung để băng hình
trong quá trình di cư. Sau đó, Chế độ xem này sẽ hoạt động mà không cần sửa đổi. (Vấn đề sẽ là tìm ra mọi thứ khác liên quan đến tên máy youtube_video
và thay đổi điều đó thành băng hình
cũng như -- có khả năng là rất nhiều nỗ lực.)
- Có thể thay đổi các tham số truy vấn theo điều kiện bằng cách sử dụng
hook_views_pre_view()
hoặc hook_views_query_alter()
, nhưng tôi chỉ muốn làm điều này nếu một tham số cụ thể được khớp.