eu folosesc Vizualizări Jump Menu cu Drupal 9.
Nodurile sunt etichetate cu a versiunea_software
taxonomie ierarhică, urmând acest model:
âââ foo
â  âââ 0.1.0
â  âââ 0.2.0
âââ bar
â  âââ 0.3.0
â  âââ 0.3.1
â  âââ 0.4.0
âââ baz
âââ 0.1.0
âââ 0.2.0
âââ 0.3.0
Planul este ca nodurile unui tip de conținut personalizat să fie etichetate cu un termen copil din lista de mai sus (valorile numerice), generând o listă de salt care conține numai nodurile etichetate cu termeni frați care au același părinte (adică, doar documentația) pagini pentru versiuni diferite ale aceluiași software).
Sub /admin/structure/views/view/taxonomy_jump_menu/edit
, există o afișare bloc a unei vizualizări care returnează în prezent întreg vocabularul taxonomiei, cu toți părinții și copiii. Cu alte cuvinte, meniul Jump face legătura cu documentația pentru toate versiunile diferitelor software.
Am sperat că există o modalitate în Views de a adăuga un filtru contextual care ar putea determina termenul de taxonomie TID al nodului curent din URL, folosiți-l pentru a determina TID-ul părinte imediat al TID (din care ar trebui să existe doar unul) și generați un meniu de salt care conține toți copiii TID-ului părinte, excluzând termenul părinte în sine.
Configurația pentru această vizualizare este de sute de linii de YAML, dar iată un extras (cu multe linii irelevante șterse, dar indentarea păstrată):
dependențe:
config:
- taxonomy.vocabulary.software_version
modul:
- taxonomie
- utilizator
- views_jump_menu
id: taxonomy_jump_menu
etichetă: „Taxonomie Jump Menu”
modul: vederi
Descriere: ''
etichetă: ''
tabel_de_bază: taxonomy_term_field_data
câmp_bază: tid
afişa:
Mod implicit:
Optiuni de afisare:
interogare:
tip: views_query
stil:
tip: jump_menu
rând:
tip: câmpuri
câmpuri:
parent_target_id:
id: parent_target_id
tabel: taxonomy_term__parent
câmp: parent_target_id
relație: niciuna
tip_grup: grup
exclude: adevărat
tid:
id: tid
tabel: taxonomy_term_field_data
câmp: tid
relație: niciuna
tip_grup: grup
exclude: fals
modifica:
alter_text: adevărat
text: „/taxonomie/term/{{ tid }}”
Nume:
id: nume
tabel: taxonomy_term_field_data
numele domeniului
relație: niciuna
tip_grup: grup
exclude: fals
filtre:
stare:
valoare: „1”
tabel: taxonomy_term_field_data
câmp: stare
plugin_id: boolean
entity_type: taxonomy_term
entity_field: stare
id: stare
expune:
operator: ''
operator_limit_selection: fals
lista_operatori: { }
Grupa 1
vid:
id: vid
tabel: taxonomy_term_field_data
câmp: vid
valoare:
versiunea_software: versiunea_software
entity_type: taxonomy_term
entity_field: vid
plugin_id: pachet
expune:
operator_limit_selection: fals
lista_operatori: { }
Grupa 1
sortează: { }
titlu: „Meniu Jump Taxonomie”
relații: { }
argumente: { }
filter_groups:
operator: AND
grupuri:
1: ȘI
Sunt multe altele de unde a venit, dar încerc să includ doar detalii importante!
Nu cred că această întrebare are un răspuns duplicat pe acest forum. Cele mai apropiate pe care le-am găsit sunt această întrebare care se referă la meniuri mai degrabă decât la taxonomie (deși poate problema mea este că ar trebui să folosesc un meniu de taxonomie aici) și această întrebare nerezolvată care nu include suficiente detalii pentru a ști dacă este relevant.
Am verificat si eu emite cozi pentru modulul contrib, dar chiar pare să fie o limitare a Views, care este în nucleu.
Am incercat sa adaug Configurați filtrul contextual: Termen de taxonomie: Părinți termen
la Vizualizare, dar care generează în mod neașteptat un meniu de salt care conține numai termeni parentali:
âââ foo
âââ bar
âââ baz
În acest moment, încep să cred că va fi mult mai ușor să scrieți o implementare hook care va modifica interogarea, dar acesta este un subiect greu de cercetat online. (Interogările mele de căutare generează o mulțime de cozi de probleme irelevante care se întorc la Drupal 5.)
Deci, pentru a se reduce totul la o întrebare la care să răspundă, ce implementarea cârligului ar fi cel mai potrivit pentru această sarcină?
Înclin spre folosire hook_views_query_alter()
pentru a modifica $interogare
obiectul însuși (în interiorul $interogare->unde
) bazat pe acest comentariu, dar sunt în apă destul de adâncă aici.