How do I get a list of Blocks by type?

  • Page Owner: Not Set
  • Last Reviewed: 2021-11-02

I always have to look this up, so I'm going to write it down.


Answer

Here's a simple example I've pulled from GateCity while working on it.

Important note: If you're not copy pasting, make sure you include ToReferenceWithoutVersion or else you'll act on every single work item for every single block.



public IContentTypeRepository ContentTypeRepository { get; }
public IContentModelUsage ContentModelUsage { get; }
public IContentLoader ContentLoader { get; }

public TokenizerRefresh(IContentTypeRepository contentTypeRepository, IContentModelUsage contentModelUsage, IContentLoader contentLoader)
{
  ContentTypeRepository = contentTypeRepository;
  ContentModelUsage = contentModelUsage;
  ContentLoader = contentLoader;
}

....

var contentType = ContentTypeRepository.Load<TextReplacementBlock>();
var usage = ContentModelUsage.ListContentOfContentType(contentType).Select(x => x.ContentLink.ToReferenceWithoutVersion());
var blocks = ContentLoader.GetItems(usage, new LoaderOptions()).OfType<TextReplacementBlock>();

foreach (var textBlock in blocks)
{
   //...
}