Пример #1
0
        /// <summary>
        /// get pagewise blog teasers based on the filters like category & tag
        /// </summary>
        /// <param name="selectedPage"></param>
        /// <param name="categoryID"></param>
        /// <param name="tagID"></param>
        /// <param name="blogArchivePageItemID"></param>
        /// <param name="totalPages"></param>
        /// <returns></returns>
        private List <Blog> GetBlogTeasersByFilters(int selectedPage, string categoryID, string tagID, string blogArchivePageItemID, out int totalPages)
        {
            List <Item> blogPageItems = new List <Item>();
            List <Blog> blogsByPage   = new List <Blog>();

            totalPages = 1;
            Item blogArchivePageItem = !string.IsNullOrEmpty(blogArchivePageItemID) ? SitecoreUtility.GetItem(new ID(blogArchivePageItemID)) : null;

            if (blogArchivePageItem != null && blogArchivePageItem.HasChildren)
            {
                blogPageItems = SitecoreUtility.GetItemsByTemplate(blogArchivePageItem, References.Templates.BlogPage.ID)
                                .Where(x => x.Fields[References.Templates.Blog.Fields.IsActive].Value == "1").ToList();

                if (blogPageItems != null && blogPageItems.Count > 0)
                {
                    int maxTeasersPerPage = Constants.MaxBlogTeasersPerPage;

                    if (!string.IsNullOrEmpty(categoryID))
                    {
                        Item categoryItem = SitecoreUtility.GetItem(new ID(categoryID));

                        if (categoryItem != null && categoryItem.Fields[References.Templates.BlogCategory.Fields.IsActive].Value == "1")
                        {
                            blogPageItems = blogPageItems.Where(x => x.Fields[References.Templates.Blog.Fields.BlogCategories].Value.Contains(categoryID)).ToList();
                        }
                    }
                    else if (!string.IsNullOrEmpty(tagID))
                    {
                        Item tagItem = SitecoreUtility.GetItem(new ID(tagID));

                        if (tagItem != null && tagItem.Fields[References.Templates.BlogTag.Fields.IsActive].Value == "1")
                        {
                            blogPageItems = blogPageItems.Where(x => x.Fields[References.Templates.Blog.Fields.BlogTags].Value.Contains(tagID)).ToList();
                        }
                    }

                    if (blogPageItems != null && blogPageItems.Count > 0)
                    {
                        foreach (Item item in blogPageItems)
                        {
                            blogsByPage.Add(new Blog(item));
                        }
                    }

                    if (blogsByPage != null && blogsByPage.Count > 0)
                    {
                        blogsByPage = blogsByPage.OrderByDescending(x => x.PostedDateTime).ToList();
                        blogsByPage = SitecoreUtility.GetPagewiseRecords <Blog>(blogsByPage, maxTeasersPerPage, selectedPage, out totalPages);
                    }
                }
            }

            return(blogsByPage);
        }