diff --git a/zero.Core/Constants.cs b/zero.Core/Constants.cs index 1cc8a3b4..b8cc2052 100644 --- a/zero.Core/Constants.cs +++ b/zero.Core/Constants.cs @@ -76,6 +76,7 @@ public static class Pages { public const string FolderAlias = "zero.folder"; + public const string DefaultRootPageTypeAlias = "root"; } } } diff --git a/zero.Core/Options/PageOptions.cs b/zero.Core/Options/PageOptions.cs index 4a4fb223..b074b3a2 100644 --- a/zero.Core/Options/PageOptions.cs +++ b/zero.Core/Options/PageOptions.cs @@ -11,6 +11,8 @@ namespace zero.Core.Options } + public string Root { get; set; } = Constants.Pages.DefaultRootPageTypeAlias; + public void Add(PageType pageType) where T : Page, new() { diff --git a/zero.Core/Routing/Page/PageUrlBuilder.cs b/zero.Core/Routing/Page/PageUrlBuilder.cs index 4362a494..ff27e7ff 100644 --- a/zero.Core/Routing/Page/PageUrlBuilder.cs +++ b/zero.Core/Routing/Page/PageUrlBuilder.cs @@ -10,6 +10,7 @@ using zero.Core.Database; using zero.Core.Database.Indexes; using zero.Core.Entities; using zero.Core.Extensions; +using zero.Core.Options; namespace zero.Core.Routing { @@ -21,10 +22,13 @@ namespace zero.Core.Routing protected IZeroStore Store { get; private set; } + protected IZeroOptions Options { get; private set; } - public PageUrlBuilder(IZeroStore store) + + public PageUrlBuilder(IZeroStore store, IZeroOptions options) { Store = store; + Options = options; } @@ -115,6 +119,10 @@ namespace zero.Core.Routing { alias = page.UrlAlias; } + else if (page.PageTypeAlias == Options.Pages.Root) + { + return String.Empty; + } else if (!page.Alias.IsNullOrWhiteSpace()) { alias = page.Alias;