From eeb091273d745674ea0ed28ce264104278d9477d Mon Sep 17 00:00:00 2001 From: Bart van Bragt Date: Thu, 9 Apr 2026 08:20:42 +0200 Subject: [PATCH] fix: tag filter produces empty results when browsing a tag When navigating to /t/{tag}?q=query the tag filter from the request was silently ignored. Added a TermsQuery on the tags field using the tag IDs resolved from the provided slugs. --- src/Api/Controllers/SearchController.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/Api/Controllers/SearchController.php b/src/Api/Controllers/SearchController.php index a0c91e3..bf66b94 100644 --- a/src/Api/Controllers/SearchController.php +++ b/src/Api/Controllers/SearchController.php @@ -26,6 +26,7 @@ use Flarum\Group\Group; use Flarum\Http\RequestUtil; use Flarum\Http\UrlGenerator; use Flarum\Settings\SettingsRepositoryInterface; +use Flarum\Tags\Tag; use Flarum\User\User; use Illuminate\Contracts\Container\Container; use Illuminate\Support\Arr; @@ -225,6 +226,14 @@ class SearchController extends ListDiscussionsController ->add(TermQuery::create('is_private', 'false')) ->add(TermsQuery::create('groups', $groups->toArray())); + if ($this->extensionEnabled('flarum-tags') && !empty($filters['tag'])) { + $slugs = is_array($filters['tag']) ? $filters['tag'] : explode(',', $filters['tag']); + $tagIds = Tag::query()->whereIn('slug', $slugs)->pluck('id')->toArray(); + if (!empty($tagIds)) { + $query->add(TermsQuery::create('tags', $tagIds), 'filter'); + } + } + if ($this->extensionEnabled('fof-byobu') && $actor->exists) { $byobuQuery = BoolQuery::create() ->add(TermQuery::create('is_private', 'true'))