A critical vulnerability was discovered in React Server Components (Next.js). Our systems remain protected but we advise to update packages to newest version. Learn More.
AI OnAI Off
A critical vulnerability was discovered in React Server Components (Next.js). Our systems remain protected but we advise to update packages to newest version. Learn More.
Maybe you could simply iterate using ParentLink reference.
Here is the extension method snippet:
using System.Collections.Generic;
using System.Linq;
using EPiServer;
using EPiServer.Core;
namespace ContentAreaWithPreview.Business
{
public static class ContentLoaderExtensions
{
public static IEnumerable<IContent> GetAllParents(this IContentLoader contentLoader, ContentReference contentReference)
{
if (ContentReference.IsNullOrEmpty(contentReference))
{
return Enumerable.Empty<IContent>();
}
contentReference = contentLoader.Get<IContent>(contentReference).ParentLink;
var contentReferences = new List<IContent>();
while (!ContentReference.IsNullOrEmpty(contentReference))
{
var content = contentLoader.Get<IContent>(contentReference);
contentReferences.Add(content);
contentReference = content.ParentLink;
}
return contentReferences;
}
}
}
and using the method in code:
ContentReference cr = new ContentReference(1234); var contentRepository = ServiceLocator.Current.GetInstance<IContentRepository>(); var contentLoader = ServiceLocator.Current.GetInstance<IContentLoader>(); contentRepository.GetAllParents(cr); contentLoader.GetAllParents(cr);
You could also simply use GetAncestors:
IEnumerable<IContent> ancestors = contentRepository.GetAncestors(currentPage.ContentLink);
Edit: Gayathri beat me to it :-)
How do I get all the parents of my CurrentPage? How do I use GetParents with Model.CurrentPage?