Як я фільтрую лише кореневі терміни у словниковому запасі у вигляді?


15

У мене словниковий запас структурований так:

  • Корінна альфа
    • Термін Альфа 1
    • Термін Альфа 2
      • Підтерма Альфа 1
  • Root Beta
  • Коренева гамма
    • Термін Гамма 1
    • Термін Гамма 2

Як я фільтрую представлення, щоб відображати лише кореневі терміни лексики? Наразі мій погляд відображає кореневі терміни, а також діти (Термін * *)

Ідучи вперед від цього, я хотів би передати аргумент «Root Alpha» (або його порядок, або що-небудь з контексту), а потім його фільтрувати лише до прямих дітей «Root Alpha». (Термін Альфа *). Фільтрування на глибину більше, ніж це було б бонусом.

Я можу змусити його працювати, якщо ввести всі свої терміни в один кореневий термін, щоб vocab став:

  • Справжній корінь
    • Корінна альфа
      • Термін Альфа 1
      • Термін Альфа 2
        • Підтерма Альфа 1
    • Root Beta
    • Коренева гамма
      • Термін Гамма 1
      • Термін Гамма 2

Я не впевнений, яка структура вокабу є більш правильною, написавши це, я зрозумів, що я маю щось читати, окрім з'ясування цього з поглядами.

Відповіді:


13

Для відображення лише кореневих термінів, у мене є рішення, яке, безумовно, зробить когось facepalm (принаймні, я це зробив):

  1. Додайте контекстний фільтр до подання систематики
  2. Виберіть термін Таксономія: батьківський термін .

    Налаштуйте його так: Коли значення фільтра недоступне : Надайте значення за замовчуванням - Фіксоване значення . Встановіть значення 0 .

Так, це все. Умови без батьків мають тут 0. Дивіться опис батьківського поля таблиці taxonomy_term_hierarchy:

Первинний ключ: {taxonomy_term_data} .tid батьківського терміна. 0 вказує на відсутність батьків.


Дуже дякую, безумовно, зіткнувся з цим за це. Так само, як зауваження, якщо хтось зациклюється на цьому, ви не можете вказати "термін таксономії" як валідатор, коли це робите, оскільки немає терміна з tid 0.
Фізи

2

якщо у вас є статична структура таксономії, ви можете фільтрувати, використовуючи filter criterion: Content: Has taxonomy terms (with depth)тоді, у цьому місці ви можете вибрати лише кореневі терміни для фільтрації:

Критерій фільтра: Зміст: Має терміни таксономії (з глибиною)

Сподіваюся, інформація буде корисною.


Структура таксономії не буде статичною, і це не дозволить мені передавати аргумент і потім фільтрувати на дітей кореневого терміна.
Фізи

@ moon.watcher: Як я можу використовувати термін таксономії (з глибиною)? Я вибираю лише батьків, але діти також з'являються.
сократіс

1

Ви також можете зробити це за допомогою простого фільтра та нестатичної структури таксономії:

  1. Додати критерій фільтра: термін Таксономія: батьківський ідентифікатор
  2. Виберіть оператор "Дорівнює" та заповніть значення "NULL"

введіть тут опис зображення

Він відображатиме лише кореневі умови вашої таксономії, і все ще працюватиме, якщо ви згодом зміните структуру таксономії ...


Так, @scandel він би обробляв нестатичну структуру таксономії, але він не вирішив би йти далі вниз по дереву, як викладено в питанні.
Фізи

0

Ви можете вибрати його за WHERE parent = 0допомогою db_query()на своїй сторінці.


Я не впевнений, що ви маєте на увазі під "на своїй сторінці", поясніть, будь ласка? Крім того, я сам не виконую запит, перегляди є, тож чи не доведеться я краще змінювати запит?
Фізи
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.