Tag-union implementation?

Continuing the discussion from Tags: category restrictions, tag groups, relationships:

I’m interested in building a tag union capability that would mimic how tag intersections are currently implemented (Tag intersections page): essentially the same result as intersections (the default category/Latest view), but doing an OR on multiple tags rather than an AND. I would appreciate any suggestions as a new Discourse developer.

My thoughts (so far) are as follows:

  • Searching on multiple tags via the search page essentially provides tag-union functionality (Does multiple tag search support AND vs OR?). The problem is that I don’t want the search results view – I want the default category page. Could search results be redirected to accomplish this?

  • If search results can’t be redirected, I’m open to attempting a /tags/union/ route (and have been looking into how intersection works). I would prefer to do this via plugin, but I am concerned that that is not something that could currently be accomplished via a plugin. Any suggestions here would be appreciated.

If there is sufficient user interest to add a tag-union capability into the Discourse core, I’d be willing to do it and submit a PR, but I’m hoping to find an alternative. Thanks in advance.

Не уверен, что это можно считать «достаточным интересом пользователей», но планирую возродить это обсуждение, чтобы узнать, заинтересованы ли пользователи и команда.

Что думаете? @daniel

Появились ли какие-либо обновления по этому вопросу? Было бы очень полезно добавить маршрут /tags/union.

Теперь у нас это есть, хотя бы в виде маршрута:

https://meta.discourse.org/?tags[]=screen-reader&tags[]=accessibility

В долгосрочной перспективе мы планируем создать интерфейс для более удобной фильтрации и сортировки списков тем.

При переходе по предоставленной ссылке я вижу пустой список тем:

Возможно, здесь есть какая-то проблема?

Да, наш маршрутизатор Ember должен узнать об этом маршруте (cc @david)

Работает, если перейти по URL напрямую

Мне нужно выполнить команду ./launcher rebuild app, чтобы это обновление появилось на моем собственном экземпляре?

Я бы подошёл, пока мы не исправим маршрутизацию на стороне клиента.

Создание массивов queryParam с использованием синтаксиса paramName[] — это особенность, специфичная для бэкенд-фреймворков, и я не думаю, что она поддерживается в Ember нативно. Мы, возможно, сможем заставить это работать, но я лишь бегло посмотрел на серверную реализацию фильтра tags, и там, похоже, также поддерживается список, разделенный пробелами.

Таким образом, эта ссылка уже должна работать без полной перезагрузки страницы: https://meta.discourse.org/?tags=screen-reader+accessibility

Это очень удобно. Однако при выборе категории из верхнего левого угла страница не сохраняет ограничения. Для страниц с одиночными тегами всё работает как ожидалось.

Например, если я нахожусь на /tag/tag1 и выбираю site-feedback в верхнем левом углу, отображается /tags/c/site-feedback/2/tag1.

При /?tags=tag1+tag2 меня просто перенаправляет на /c/site-feedback/2.

Возможно ли реализовать такую функциональность?

Кажется, это также запрашивалось в этих двух темах:

Подобные функции на данный момент не поддерживаются, однако мы рассматриваем возможность их улучшения в долгосрочной перспективе