Sunday, January 12, 2020

C#, EPiserver - Get all descending pages of all types


var currentCultureInfo = new CultureInfo("no");
               
                var contentLoader = ServiceLocator.Current.GetInstance<IContentLoader>();
                var startPage = contentLoader.GetChildren<StartPage>(ContentReference.RootPage, currentCultureInfo).FirstOrDefault();

                ICollection<PageData> listOfPages = new List<PageData>();
                ContentReferenceExtensions.GetDescendantsOfType<PageData>(startPage, listOfPages, currentCultureInfo);

  /// <summary>
        /// Recursive GetDescendantsOfType
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="page"></param>
        /// <param name="descendants">results</param>
        /// <param name="language"></param>
        public static void GetDescendantsOfType<T>(PageData page, ICollection<T> descendants, CultureInfo language) where T : class
        {
            var contentRepository = ServiceLocator.Current.GetInstance<IContentRepository>();
            var children = contentRepository.GetChildren<PageData>(page.ContentLink, language);
            foreach (var child in children)
            {
                if (child is T)
                {
                    descendants.Add(child as T);
                }
                GetDescendantsOfType(child, descendants, language);
            }
        }

No comments:

Post a Comment