Tôi đang sử dụng Lượt xem Nhảy Menu với Drupal 9.
Các nút được gắn thẻ với một phiên bản phần mềm
phân loại phân cấp, theo mẫu này:
âââ foo
â âââ 0.1.0
â âââ 0.2.0
âââ thanh
â âââ 0.3.0
â âââ 0.3.1
â âââ 0.4.0
âââ baz
âââ 0.1.0
âââ 0.2.0
âââ 0.3.0
Kế hoạch dành cho các nút của Loại nội dung tùy chỉnh được gắn thẻ với thuật ngữ con từ danh sách ở trên (giá trị số), tạo danh sách nhảy chỉ chứa các nút được gắn thẻ với thuật ngữ anh chị em chia sẻ cùng một gốc (nghĩa là chỉ tài liệu trang cho các phiên bản khác nhau của cùng một phần mềm).
Dưới /admin/cấu trúc/lượt xem/lượt xem/taxonomy_jump_menu/chỉnh sửa
, có một Hiển thị khối của Chế độ xem hiện trả về toàn bộ từ vựng phân loại, với tất cả cha mẹ và con cái. Nói cách khác, menu Jump liên kết đến tài liệu cho tất cả các phiên bản của tất cả các phần mềm khác nhau.
Tôi đã hy vọng rằng có một cách trong Chế độ xem để thêm Bộ lọc theo ngữ cảnh có thể xác định thuật ngữ phân loại TID của nút hiện tại từ URL, sử dụng cách đó để xác định TID gốc trực tiếp của TID (chỉ nên có một TID) và tạo một menu nhảy chứa tất cả các phần tử con của TID gốc, ngoại trừ chính thuật ngữ gốc đó.
Cấu hình cho Chế độ xem này là hàng trăm dòng YAML, nhưng đây là một đoạn trích (với nhiều dòng không liên quan đã bị xóa, nhưng vẫn giữ được thụt đầu dòng):
phụ thuộc:
cấu hình:
- taxonomy.vocabulary.software_version
mô-đun:
- phân loại
- người dùng
- lượt xem_jump_menu
id: taxonomy_jump_menu
nhãn: 'Menu nhảy phân loại'
mô-đun: lượt xem
sự miêu tả: ''
nhãn: ''
base_table: taxonomy_term_field_data
base_field: tid
trưng bày:
mặc định:
tùy chọn hiển thị:
truy vấn:
gõ: lượt xem_query
Phong cách:
gõ: jump_menu
hàng ngang:
loại: lĩnh vực
lĩnh vực:
parent_target_id:
id: parent_target_id
bảng: taxonomy_term__parent
trường: parent_target_id
mối quan hệ: không có
nhóm_type: nhóm
loại trừ: đúng
tid:
id: tid
bảng: taxonomy_term_field_data
lĩnh vực: tid
mối quan hệ: không có
nhóm_type: nhóm
loại trừ: sai
thay đổi:
thay đổi văn bản: đúng
văn bản: '/taxonomy/term/{{ tid }}'
Tên:
id: tên
bảng: taxonomy_term_field_data
lĩnh vực: tên
mối quan hệ: không có
nhóm_type: nhóm
loại trừ: sai
bộ lọc:
trạng thái:
giá trị: '1'
bảng: taxonomy_term_field_data
trường: trạng thái
plugin_id: boolean
entity_type: taxonomy_term
entity_field: trạng thái
id: trạng thái
lộ ra:
nhà điều hành: ''
toán tử_limit_selection: sai
toán tử_list: { }
nhóm 1
video:
id: video
bảng: taxonomy_term_field_data
lĩnh vực: video
giá trị:
phần mềm_version: phần mềm_version
entity_type: taxonomy_term
entity_field: vid
plugin_id: gói
lộ ra:
toán tử_limit_selection: sai
toán tử_list: { }
nhóm 1
sắp xếp: { }
tiêu đề: 'Menu nhảy phân loại'
các mối quan hệ: { }
tranh luận: { }
filter_groups:
toán tử: AND
các nhóm:
1: VÀ
Còn nhiều điều nữa đến từ đâu, nhưng tôi đang cố gắng chỉ đưa vào những chi tiết nổi bật!
Tôi không nghĩ câu hỏi này có câu trả lời trùng lặp trên diễn đàn này. Gần nhất tôi đã tìm thấy là câu hỏi này liên quan đến menu chứ không phải phân loại (mặc dù có lẽ vấn đề của tôi là tôi nên sử dụng Menu Phân loại ở đây) và câu hỏi chưa được giải quyết này không bao gồm đủ chi tiết để biết liệu nó có liên quan hay không.
Tôi cũng đã kiểm tra các phát hành hàng đợi đối với mô-đun đóng góp, nhưng nó thực sự có vẻ là một hạn chế của chính Chế độ xem, vốn là cốt lõi.
Tôi đã thử thêm Định cấu hình bộ lọc theo ngữ cảnh: Thuật ngữ phân loại: Thuật ngữ cha mẹ
vào Chế độ xem, nhưng điều đó bất ngờ tạo ra một menu nhảy có chứa chỉ có điều khoản cha mẹ:
âââ foo
âââ thanh
âââ baz
Tại thời điểm này, tôi bắt đầu nghĩ rằng việc viết một triển khai hook sẽ sửa đổi truy vấn sẽ dễ dàng hơn nhiều, nhưng đây là một chủ đề khó nghiên cứu trực tuyến. (Các truy vấn tìm kiếm của tôi xuất hiện rất nhiều hàng đợi sự cố không liên quan khi quay trở lại Drupal 5.)
Vì vậy, để rút gọn tất cả những điều này thành một câu hỏi có thể trả lời được, điều gì móc thực hiện sẽ phù hợp nhất cho nhiệm vụ này?
Tôi đang nghiêng về phía sử dụng hook_views_query_alter()
để sửa đổi truy vấn $
bản thân đối tượng (trong $query->where
) dựa trên bình luận này, nhưng tôi đang ở vùng nước khá sâu đây.