Преобразование имен терминов со специальными символами в идентификаторы терминов в представлениях

11

У меня есть представление, где я хочу использовать несколько termID в качестве аргументов. Я хочу использовать имя термина из URL и преобразовать его в termID. Мне удалось сделать это достаточно легко, и он работает с простыми терминами в 1 слово или даже несколькими словами, проверив «Преобразовать тире в URL в пробелы в аргументах имени термина».

У меня есть несколько терминов, которые имеют специальные символы, например: «новости и политика».

Есть ли способ получить хорошие URL-адреса (новостная политика) и получить представления, чтобы распознать правильный термин и преобразовать его в правильный termID? Нужно ли мне кодировать амперсанд? Будет ли это даже работать?

Изменить: Вы можете настроить псевдонимы пути для отдельных терминов таксономии, но это проблема, когда вы хотите использовать имя термина в качестве второго аргумента в пути с несколькими аргументами, например:

Скажем, я хотел отфильтровать результаты просмотра по% 1 новостному термину, а затем по% 2

/ Новости / Новости-политика

Второй срок не будет признан.

nickwshaw
источник
Почему вы не используете термин name в качестве аргумента?
Доберман
Та же проблема. Амперсанд отсутствует, поэтому друпал не может найти термин. Я думаю, что единственным вариантом является либо URL-кодирование амперсанда, который SEO не заинтересован, либо, возможно, сохранение псевдонима пути для каждого термина в БД. Просто подумал, сталкивался ли кто-нибудь с этим раньше и имеет хорошую стратегию.
nickwshaw
Ну, в качестве краткосрочного решения мы просто заменим слово и. Таким образом, Новости и Политика (новости-политика) будут Новости и Политика (новости-политика)
nickwshaw

Ответы:

2

Вы можете использовать pathauto для настройки автоматических псевдонимов для ваших терминов таксономии. Pathauto позаботится о недопустимых символах URL для вас, когда создаст автоматические псевдонимы. Затем, по вашему мнению, используйте термин id в качестве аргумента. Путь вашего представления может быть либо таксономия / термин /% или автоалиас, который вы настроили /%

Jepedo
источник
1
Спасибо, Джепедо. Это отличное решение для одного термина таксономии. Но по-прежнему существует проблема, если вы хотите использовать термин в качестве подстановочного аргумента в пути с несколькими аргументами. Я должен был упомянуть об этом в своем оригинальном сообщении и сейчас отредактировал его.
nickwshaw
2

Из-за давней ошибки в модуле Views, о которой сообщалось в выпуске № 672606: знаки плюс, тире и косые черты (+ - /) приводят к разрыву аргументов на Drupal.org, их нельзя использовать в качестве аргументов (или «контекстных фильтров»). «в более позднем языке) имена терминов, которые содержат определенные специальные символы. Пара обходные предлагается там :

  1. Используйте что-то наподобие модуля Computed field (computed_field), чтобы создать удобное для URL значение поля для термина «сущность», которое можно использовать в качестве аргумента. Просто знайте о (тонкой?) Вероятности того, что очень похожие термины могут помешать друг другу, если вы не будете осторожны с уникальностью.
  2. Просто используйте идентификаторы терминов для аргументов и создайте для них псевдонимы путей с помощью модуля View Alias (view_alias).
TravisCarden
источник