diff --git a/src/Orchard.Web/Modules/Orchard.Taxonomies/Projections/TermsFilter.cs b/src/Orchard.Web/Modules/Orchard.Taxonomies/Projections/TermsFilter.cs index d9eca7382..f07415f8b 100644 --- a/src/Orchard.Web/Modules/Orchard.Taxonomies/Projections/TermsFilter.cs +++ b/src/Orchard.Web/Modules/Orchard.Taxonomies/Projections/TermsFilter.cs @@ -47,8 +47,11 @@ namespace Orchard.Taxonomies.Projections { var terms = ids.Select(_taxonomyService.GetTerm).ToList(); var allChildren = new List(); foreach (var term in terms) { - allChildren.AddRange(_taxonomyService.GetChildren(term)); - allChildren.Add(term); + bool.TryParse(context.State.ExcludeChildren?.Value, out bool excludeChildren); + if (!excludeChildren) + allChildren.AddRange(_taxonomyService.GetChildren(term)); + if (term != null) + allChildren.Add(term); } allChildren = allChildren.Distinct().ToList(); diff --git a/src/Orchard.Web/Modules/Orchard.Taxonomies/Projections/TermsFilterForms.cs b/src/Orchard.Web/Modules/Orchard.Taxonomies/Projections/TermsFilterForms.cs index 297b93b6c..c6cc27a4b 100644 --- a/src/Orchard.Web/Modules/Orchard.Taxonomies/Projections/TermsFilterForms.cs +++ b/src/Orchard.Web/Modules/Orchard.Taxonomies/Projections/TermsFilterForms.cs @@ -48,8 +48,13 @@ namespace Orchard.Taxonomies.Projections { Id: "operator-is-all-of", Name: "Operator", Title: T("Is all of"), Value: "1" ) - ) - ); + ), + _ExcludeChildren: Shape.Checkbox( + Id: "ExcludeChildren", Name: "ExcludeChildren", + Title: T("Automatically exclude children terms in filtering"), + Value: "true" + ) + ); foreach (var taxonomy in _taxonomyService.GetTaxonomies()) { f._Terms.Add(new SelectListItem { Value = String.Empty, Text = taxonomy.Name });