AI OnAI Off
Hi Deepa,
You sure can do this using code, this might not be the optimial way of doing it, however it should give you guidance.
PDF's as I understand it should be stored as a media type, therefore we can use 'IContentLoader' to get all content that is media, if you have a specific media type for PDF's then better to use this.
public class MediaService
{
private readonly IContentLoader _contentLoader;
public MediaService(IContentLoader contentLoader)
{
_contentLoader = contentLoader ?? throw new ArgumentNullException(nameof(contentLoader));
}
public IEnumerable<ContentReference> GetAllMediaReferences()
{
var mediaRoot = ContentReference.GlobalBlockFolder;
var mediaFolders = _contentLoader.GetChildren<MediaData>(mediaRoot);
var allMediaReferences = new List<ContentReference>();
foreach (var mediaFolder in mediaFolders)
{
var mediaReferences = GetMediaReferencesRecursive(mediaFolder.ContentLink);
allMediaReferences.AddRange(mediaReferences);
}
return allMediaReferences;
}
private IEnumerable<ContentReference> GetMediaReferencesRecursive(ContentReference folderReference)
{
var mediaReferences = new List<ContentReference>();
var mediaItems = _contentLoader.GetChildren<MediaData>(folderReference);
mediaReferences.AddRange(mediaItems.Select(media => media.ContentLink));
var subFolders = _contentLoader.GetChildren<ContentFolder>(folderReference);
foreach (var subFolder in subFolders)
{
var subFolderMediaReferences = GetMediaReferencesRecursive(subFolder.ContentLink);
mediaReferences.AddRange(subFolderMediaReferences);
}
return mediaReferences;
}
}
Once you have all the media you can loop over this and then find the page / block that is using the media:
public IEnumerable<ContentReference> GetContentReferencesUsingMedia(ContentReference mediaContentReference)
{
return _contentSoftLinkRepository.Load(mediaContentReference, false)
.Select(link => link.OwnerContentLink);
}
Additionally you might need to apply some filtering on the media to filter out images, videos, etc.
Hopefully this will help guide you to a solution.
Paul
Hello,
We have requirement to fetch all page links with PDF reference in it.Is there a way we can export all the pages with a PDF link with detail of category tag, published date, PDF link and page URL in Optimizely CMS 12 using code or any other way.
Thanks,
Deepa