private List <Url> GetPageUrls(IApi api, Models.SitemapItem item, string baseUrl) { var urls = new List <Url>(); if (item.Published.HasValue) { urls.Add(new Url() { ChangeFrequency = ChangeFrequency.Daily, Location = baseUrl + item.Permalink, Priority = 0.5, TimeStamp = item.LastModified }); // Check if this is a blog page var page = api.Pages.GetById(item.Id); if (page.ContentType == "Blog") { // Get all posts for the blog var posts = api.Posts.GetAll(page.Id); foreach (var post in posts) { urls.Add(new Url() { ChangeFrequency = ChangeFrequency.Daily, Location = baseUrl + post.Permalink, Priority = 0.5, TimeStamp = post.LastModified }); } } foreach (var child in item.Items) { var childUrls = GetPageUrls(api, child, baseUrl); if (childUrls.Count > 0) { urls.AddRange(childUrls); } } } return(urls); }
private async Task <List <Url> > GetPageUrlsAsync(IApi api, Models.SitemapItem item, string baseUrl) { var urls = new List <Url>(); if (item.Published.HasValue && item.Published.Value <= DateTime.Now) { urls.Add(new Url { ChangeFrequency = ChangeFrequency.Daily, Location = baseUrl + item.Permalink, Priority = 0.5, TimeStamp = item.LastModified }); // Get all posts for the blog var posts = await api.Posts.GetAllAsync(item.Id); foreach (var post in posts) { if (post.Published.HasValue && post.Published.Value <= DateTime.Now) { urls.Add(new Url { ChangeFrequency = ChangeFrequency.Daily, Location = baseUrl + post.Permalink, Priority = 0.5, TimeStamp = post.LastModified }); } } foreach (var child in item.Items) { var childUrls = await GetPageUrlsAsync(api, child, baseUrl); if (childUrls.Count > 0) { urls.AddRange(childUrls); } } } return(urls); }
/// <summary> /// Sorts the items. /// </summary> /// <param name="pages">The full page list</param> /// <param name="parentId">The current parent id</param> /// <returns>The sitemap</returns> private IList <Models.SitemapItem> Sort(IList <Data.Page> pages, Guid?parentId = null, int level = 0) { var result = new List <Models.SitemapItem>(); foreach (var page in pages.Where(p => p.ParentId == parentId).OrderBy(p => p.SortOrder)) { var item = new Models.SitemapItem() { Id = page.Id, Title = page.Title, NavigationTitle = page.NavigationTitle, Permalink = page.Slug, Level = level, Published = page.Published, Created = page.Created, LastModified = page.LastModified }; item.Items = Sort(pages, page.Id, level + 1); result.Add(item); } return(result); }