From 1294620cc94b92a62e92745d004887ef0a49b69d Mon Sep 17 00:00:00 2001 From: Romain 'Maz' BILLOIR Date: Mon, 5 Sep 2022 14:55:08 +0200 Subject: [PATCH 1/2] Add support for category filtering in Categories component Fix #26 --- components/Categories.php | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/components/Categories.php b/components/Categories.php index c74de38..00d9795 100644 --- a/components/Categories.php +++ b/components/Categories.php @@ -53,6 +53,12 @@ public function defineProperties() 'default' => 'blog/category', 'group' => 'winter.blog::lang.settings.group_links', ], + 'categoryFilter' => [ + 'title' => 'winter.blog::lang.settings.posts_filter', + 'description' => 'winter.blog::lang.settings.posts_filter_description', + 'default' => '{{ :slug }}', + 'type' => 'string', + ], ]; } @@ -74,7 +80,20 @@ public function onRun() */ protected function loadCategories() { - $categories = BlogCategory::with('posts_count')->getNested(); + $categoriesQuery = BlogCategory::with('posts_count'); + + if ($slug = $this->property('categoryFilter')) { + if ((new BlogCategory)->isClassExtendedWith('Winter.Translate.Behaviors.TranslatableModel')) { + $categoriesQuery->transWhere('slug', $slug); + } else { + $categoriesQuery->where('slug', $slug); + } + + $categories = $categoriesQuery->first()->getChildren(); + } else { + $categories = $categoriesQuery->getNested(false); + } + if (!$this->property('displayEmpty')) { $iterator = function ($categories) use (&$iterator) { return $categories->reject(function ($category) use (&$iterator) { From 733b150470686a26f05b569817459b50af337a62 Mon Sep 17 00:00:00 2001 From: Romain 'Maz' BILLOIR Date: Mon, 5 Sep 2022 14:59:20 +0200 Subject: [PATCH 2/2] Remove useless parameter --- components/Categories.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/Categories.php b/components/Categories.php index 00d9795..12ec991 100644 --- a/components/Categories.php +++ b/components/Categories.php @@ -91,7 +91,7 @@ protected function loadCategories() $categories = $categoriesQuery->first()->getChildren(); } else { - $categories = $categoriesQuery->getNested(false); + $categories = $categoriesQuery->getNested(); } if (!$this->property('displayEmpty')) {