Jak filtrować w widoku tylko podstawowe terminy w słowniku?

15

Mam tak skonstruowane słownictwo:

  • Root Alpha
    • Termin alfa 1
    • Termin Alpha 2
      • Subterm Alpha 1
  • Root Beta
  • Root Gamma
    • Termin Gamma 1
    • Termin Gamma 2

Jak filtrować widok, aby wyświetlać tylko podstawowe terminy w słowniku? Obecnie w moim widoku są wyświetlane podstawowe terminy, a także dzieci (Termin * *)

Idąc dalej, chciałbym przekazać argument „Root Alpha” (lub jego tid, lub cokolwiek innego z kontekstu), a następnie pozwolić, aby filtrował tylko na bezpośrednie dzieci „Root Alpha”. (Termin Alpha *). Filtrowanie do głębokości bardziej niż to byłoby bonusem.

Mogę sprawić, by zadziałało, jeśli wszystkie moje warunki umieściłem w jednym rdzeniu, aby słownictwo stało się:

  • Prawdziwy root
    • Root Alpha
      • Termin alfa 1
      • Termin Alpha 2
        • Subterm Alpha 1
    • Root Beta
    • Root Gamma
      • Termin Gamma 1
      • Termin Gamma 2

Nie jestem pewien, która struktura słownictwa jest bardziej poprawna, pisanie tego sprawiło, że zdałem sobie sprawę, że mam trochę do czytania, oprócz rozpracowania tego z widokami.

Phizes
źródło

Odpowiedzi:

13

Aby wyświetlać tylko podstawowe terminy, mam rozwiązanie, które z pewnością sprawi, że ktoś zrobi facepalm (przynajmniej to zrobiłem):

  1. Dodaj filtr kontekstowy do widoku taksonomii
  2. Wybierz Termin taksonomia: termin nadrzędny .

    Skonfiguruj to w następujący sposób: Gdy wartość filtru nie jest dostępna : Podaj wartość domyślną - Wartość stała . Ustaw wartość na 0 .

Tak, to wszystko. Warunki bez rodzica mają 0 tutaj. Zobacz opis pola nadrzędnego tabeli taksonomii_term_hierarchii:

Klucz podstawowy: {taxonomy_term_data} .tid rodzica terminu. 0 oznacza brak rodzica.

Scorchio
źródło
Dziękuję bardzo, zdecydowanie się za to przygotowałem. Dla przypomnienia, jeśli ktoś utknie w tym, nie możesz określić „taksonomii” jako walidatora, ponieważ nie ma terminu o tid 0.
Phizes
2

jeśli masz statyczną strukturę taksonomii, możesz filtrować, używając, filter criterion: Content: Has taxonomy terms (with depth)a następnie w tym miejscu możesz wybrać tylko podstawowe terminy do filtrowania:

kryterium filtrowania: Treść: Ma terminy taksonomiczne (z głębokością)

Mam nadzieję, że informacje będą przydatne.

cigotete
źródło
Struktura taksonomii nie będzie statyczna, a to nie pozwoliłoby mi przekazać argumentu, a następnie filtrować do elementów potomnych terminu root.
Phizes
@ moon.watcher: Jak mogę używać terminu taksonomia (z głębokością)? Wybieram tylko rodziców, ale pojawiają się również dzieci.
sokratis
1

Możesz to również zrobić za pomocą prostego filtra i niestatycznej struktury taksonomii:

  1. Dodaj kryterium filtru: Taksonomia: identyfikator rodzica
  2. Wybierz operator „Jest równy” i wpisz wartość „NULL”

wprowadź opis zdjęcia tutaj

Wyświetli tylko podstawowe warunki Twojej taksonomii i nadal będzie działać, jeśli później zmienisz strukturę taksonomii ...

żyrandol
źródło
Tak, @scandel poradziłby sobie z niestatyczną strukturą taksonomii, ale nie poradziłby sobie z zejściem dalej w dół drzewa, jak określono w pytaniu, tak jak w zaakceptowanej odpowiedzi.
Phizes
0

Możesz go wybrać za WHERE parent = 0pomocą przycisku db_query()na swojej stronie.

Ahmed
źródło
Nie jestem pewien, co rozumiesz przez „na swojej stronie”, proszę wyjaśnij? Również nie wykonuję zapytania samodzielnie, widoki są, więc czy nie musiałbym raczej modyfikować zapytania?
Phizes