Назва терміна таксономія як контекстний фільтр для перегляду


18

У D7 мені вдалося відфільтрувати подання відповідно до назви терміна таксономії, взятого з URL-адреси. Прикладом може бути ця URL-адреса

http://www.gbyte.co/tags/drupal-planet/rss.xml

"drupal-planet" буде перетворений на термін ID таксономії, який потім фільтрував би результати перегляду відповідно.

Тепер я встановив відповідний вигляд D8 з контекстним фільтром "Вміст: Теги (теги field_tags)", поля field_tags - поле таксономії. Однак перегляд D8 покаже результати лише тоді, коли я передам фактичний ідентифікатор терміна в URL-адресу, як це:

http://www.gbyte.co/tags/9/rss.xml

Я хотів би, щоб працювати з терміном ім'я як D7 зробив. Чи функціональність відсутня, чи мені потрібно конфігурувати подання по-іншому?


Будь-які новини з цього приводу? У мене така ж проблема
jeroen

Відповіді:


20

Ім’я терміна, перетворене у фільтр ідентифікатора терміна, схоже, відсутні для переглядів D8.

Одне рішення для розробників сайтів - це додати до вузла терміни " Зв'язок" , " Таксономія", а потім додати фільтр " Таксономія": "Ім'я" до контекстуальних фільтрів, використовуючи вищезазначене співвідношення. Перевірка вказати критерії перевірки прапорця, встановіть Validator в систематику термін ім'я і перевірити відповідну таксономию для фільтрації.


12
Проблема веб-розробника сайту в D8 додає інтерфейс контекстного фільтра: назва контекстного фільтра - "Ім'я", а категорія - термін "Таксономія". Якщо знайти "таксономію", цей фільтр не вдасться перерахувати, оскільки шукаються лише заголовок та опис, а не категорія.
кейт

1
Крім того , ви можете переписати заголовок з {{ arguments.name }}в налаштуваннях контекстного фільтру.
cptstarling


3

Тільки заради завершення, під час написання питання мені вдалося обійти цю проблему, перетворивши назву терміна таксономії з URL у термін ID у views_hook_pre_view (), а потім використовуючи його як вхід для контекстного фільтра який приймає ідентифікаційні таксономії.

Ось код для гачка переглядів:

/**
 * Implements hook_views_pre_view().
 */
function my_module_views_pre_view(\Drupal\views\ViewExecutable $view, $display_id, array &$args) {
  if ($view->id() == 'blog' && $display_id == 'feed') {
    if (isset($args[0])) {
      $term = taxonomy_term_load_multiple_by_name($args[0], 'tags');
      if (empty($term)) {
        $term = taxonomy_term_load_multiple_by_name(str_replace("-", " ", $args[0]), 'tags');
      }
      if (!empty($term)) {
        $tid = key($term);
        $args[0] = $tid;
      }
    }
  }
}

2

Щоб розширити відповідь Шона Конна:

  • У налаштуваннях представлення даних у розділі Додатково -> Відносини натисніть "Додати"
  • Тепер виберіть "Терміни таксономії на вузлі"
  • На наступному екрані виберіть словник "тегів" і вимагайте співвідношення.
  • Тепер у розділі Додатково -> Контекстуючі фільтри натисніть "Додати"
  • У розділі "Коли фільтр НЕ доступний", виберіть "Надати значення за замовчуванням", "Невизначене значення з URL-адреси". Виберіть будь-які інші варіанти, що відповідають вашим потребам.
  • У розділі "Коли доступний фільтр IS або встановлено значення за замовчуванням" виберіть "Укажіть критерії перевірки" та виберіть "Ім'я терміна таксономії" для валідатора. Виберіть словник "теги" та натисніть кнопку застосувати.

Сподіваюся, що це допомагає!


1

Я не знаю, чи все ж у вас є ця проблема, але мені вдалося створити співвідношення для "термінів таксономії на вузлі", використовуючи потрібну лексику таксономії, а потім створити контекстуальний фільтр, використовуючи цей взаємозв'язок для "терміна таксономії: ім'я", який дозволяє вам перевірити на основі імені, а не TID.


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

1

@kiethm надав правильний спосіб наблизитись до цього - Під контекстними фільтрами потрібно вибрати "Ім'я", а не "Ідентифікатор терміна таксономії", а потім встановити критерії перевірки, щоб використовувати "Ім'я терміна таксономії" .


1

Гей, я шукав цю відповідь деякий час. Для тих, хто, як я, шукає, як змусити його працювати, я натрапив на успіх частково звідси та результати drupal.org, а потім і з наступних: http://redcrackle.com/blog/adding-contextual-filter -огляд-друпаль-8

Я використовую Drupal 8 і Zircon. Я абсолютно новий, тому можу використовувати неправильні терміни. Я хотів створити контекстні посилання на зображення у "Панелі першого кола 1" на основі Категорії сторінки, на якій хтось перебуває. Що я зробив, це перейти до Структура> Перегляди> Карусель (вигляд із зображеннями у цьому блочному регіоні)> Додатково> Додати за контекстними фільтрами> Ідентифікатор терміна таксономії> вибрати в Показувати значення за замовчуванням: Ідентифікатор терміна таксономії з URL (який зробив немає сенсу для мене, але все, що завгодно)> тоді я перевірив усі три поля: Завантажити фільтр за замовчуванням зі сторінки терміна, Завантажити фільтр за замовчуванням зі сторінки вузла, це добре для відповідних блоків таксономії, Обмежити терміни словниковим запасом. Тоді для словникових запасів я перевірив категорії.

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


1

Я написав крихітний модуль, щоб відновити відсутню функціональність і змусити цю роботу знову правильно:

https://www.drupal.org/project/views_taxonomy_term_name_into_id

Він знову додає валідатор аргументу "Перетворити ім'я терміна в ідентифікатор" для термінів таксономії, які використовуються у "контекстних фільтрах" у "Переглядах". Докладнішу інформацію та інструкції див. На сторінці проекту.

Насолоджуйтесь, -Дерек (dww)


0

Це можна зробити, додавши вміст: має ідентифікаційний термін таксономії у контекстному фільтрі, тоді ви можете використовувати таксономію в контекстному контексті, регулюючи критерії фільтра

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


Ви зробили знімок екрана з установки D7. У D8 немає валідатора "Термін таксономії". Натомість є "Ідентифікатор терміна таксономії" або "Назва терміна таксономії", які не приймають назву таксономії з URL. Вони приймають лише посвідчення особи.
gbyte.co

0

Я досяг цього в Drupal-8, взявши контекстний фільтр: "Термін Таксономія: Ім'я"

Тоді введіть значення за замовчуванням Тип ID терміна Таксономія Від URL

Потім вкажіть наступні критерії перевірки:

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

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