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);
        }
Exemple #3
0
        /// <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);
        }