public ActionResult RenderTagsOrCategoriesSidebarFilter()
        {
            TagsOrCategoriesSidebarFilter viewModel = null;

            try
            {
                string blogArchivePageItemID = SitecoreUtility.GetRenderingParameters(References.Templates.TagsOrCategoriesSidebarFilter.ID, References.Templates.TagsOrCategoriesSidebarFilter.Fields.BlogArchivePage);

                if (!string.IsNullOrEmpty(blogArchivePageItemID))
                {
                    Item blogArchivePageItem = SitecoreUtility.GetItem(new ID(blogArchivePageItemID));

                    if (blogArchivePageItem != null)
                    {
                        viewModel = new TagsOrCategoriesSidebarFilter();
                        viewModel.SectionTitle       = SitecoreUtility.GetRenderingParameters(References.Templates.TagsOrCategoriesSidebarFilter.ID, References.Templates.TagsOrCategoriesSidebarFilter.Fields.SectionTitle);
                        viewModel.DisplayItemsAsTags = SitecoreUtility.GetRenderingParameters(References.Templates.TagsOrCategoriesSidebarFilter.ID, References.Templates.TagsOrCategoriesSidebarFilter.Fields.DisplayItemsAsTags) == "1";
                        viewModel.BlogArchivePageURL = SitecoreUtility.GetItemURL(blogArchivePageItem);

                        if (!viewModel.DisplayItemsAsTags)
                        {
                            List <BlogCategory> categoriesUsedByBlogs = new List <BlogCategory>();
                            Item blogCategoriesFolderItem             = SitecoreUtility.GetItem(References.Content.BlogCategoriesFolder);

                            if (blogCategoriesFolderItem != null && blogCategoriesFolderItem.HasChildren)
                            {
                                List <Item> activeCategories = SitecoreUtility.GetItemsByTemplate(blogCategoriesFolderItem, References.Templates.BlogCategory.ID)
                                                               .Where(x => x.Fields[References.Templates.BlogCategory.Fields.IsActive].Value == "1").ToList();

                                if (activeCategories != null && activeCategories.Count > 0)
                                {
                                    foreach (Item category in activeCategories)
                                    {
                                        if (SitecoreUtility.HasReferrers(category, References.Templates.BlogPage.ID, References.Templates.Blog.Fields.IsActive))
                                        {
                                            BlogCategory blogCategory = new BlogCategory(category);
                                            categoriesUsedByBlogs.Add(blogCategory);
                                        }
                                    }

                                    viewModel.BlogCategories = categoriesUsedByBlogs;
                                }
                            }
                        }
                        else
                        {
                            List <BlogTag> tagsUsedByBlogs    = new List <BlogTag>();
                            Item           blogTagsFolderItem = SitecoreUtility.GetItem(References.Content.BlogTagsFolder);

                            if (blogTagsFolderItem != null && blogTagsFolderItem.HasChildren)
                            {
                                List <Item> activeTags = SitecoreUtility.GetItemsByTemplate(blogTagsFolderItem, References.Templates.BlogTag.ID)
                                                         .Where(x => x.Fields[References.Templates.BlogTag.Fields.IsActive].Value == "1").ToList();

                                if (activeTags != null && activeTags.Count > 0)
                                {
                                    foreach (Item tag in activeTags)
                                    {
                                        if (SitecoreUtility.HasReferrers(tag, References.Templates.BlogPage.ID, References.Templates.Blog.Fields.IsActive))
                                        {
                                            BlogTag blogTag = new BlogTag(tag);
                                            tagsUsedByBlogs.Add(blogTag);
                                        }
                                    }

                                    viewModel.BlogTags = tagsUsedByBlogs;
                                }
                            }
                        }
                    }
                }
            }
            catch (System.Exception ex)
            {
                LogManager.SaveLog(System.Reflection.MethodBase.GetCurrentMethod().ReflectedType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name, ex, LogManager.LogTypes.Error, string.Empty);
            }

            return(View(GlobalConstants.SUBLAYOUTS_PATH + "PageContent/TagsOrCategoriesSidebarFilter.cshtml", viewModel));
        }