コード例 #1
0
        public ArticleResultSet GetLatestArticles(IPublishedContent currentContentItem, HttpRequestBase request)
        {
            var siteRoot    = currentContentItem.Root();
            var articleList = GetArticleListPage(siteRoot);
            var articles    = articleList.Descendants()
                              .Where(x => x.ContentType.Alias == "article" && x.IsVisible())
                              .OrderByDescending(x => x.Value <DateTime>("articleDate"));

            var isArticleListPage = articleList.Id == currentContentItem.Id;
            var fallbackPageSize  = isArticleListPage ? 10 : 3;

            var pageNumber = QueryStringHelper.GetNumberFromQueryStr(request, "page", 1);
            var pageSize   = QueryStringHelper.GetNumberFromQueryStr(request, "size", fallbackPageSize);

            var pageOfArticles = articles.Skip((pageNumber - 1) * pageSize).Take(pageSize);

            var totalItemCount = articles.Count();
            var pageCount      = totalItemCount > 0 ? Math.Ceiling((double)totalItemCount / pageSize) : 1;

            return(new ArticleResultSet
            {
                PageCount = (int)pageCount,
                PageNumber = pageNumber,
                PageSize = pageSize,
                Results = pageOfArticles,
                IsArticleResultsPage = isArticleListPage,
                Url = articleList.Url
            });
        }