---
title: Select content
slug: cms-13/docs/select-content
docTags: 
createdAt: 2026-07-30T20:22:10.345Z
---

Content selector properties create links between content items. Optimizely Content Management System (CMS) provides built-in selectors for common content types and supports custom selectors for specialized needs.

## Built-in content selectors

Built-in selectors cover the most common content reference types. Apply a `UIHint` attribute to a `ContentReference` property to restrict the selector to a specific content type.

```csharp
public virtual PageReference PageReference {
  get;
  set;
}

[UIHint(UIHint.Block)]
public virtual ContentReference BlockReference {
  get;
  set;
}

[UIHint(UIHint.Image)]
public virtual ContentReference ImageReference {
  get;
  set;
}

[UIHint(UIHint.Video)]
public virtual ContentReference VideoReference {
  get;
  set;
}

[UIHint(UIHint.MediaFile)]
public virtual ContentReference AnyMediaFileReference {
  get;
  set;
}

[UIHint(UIHint.BlockFolder)]
public virtual ContentReference BlockFolderReference {
  get;
  set;
}

[UIHint(UIHint.MediaFolder)]
public virtual ContentReference MediaFolderReference {
  get;
  set;
}
```

## Customize a selector

Custom selectors let you override the default repository root. The following example shows how to create a custom selector for a `TeaserBlock` content type.

```csharp
[UIHint("teaserblock")]
public virtual ContentReference TeaserBlockReference {
  get;
  set;
}

[EditorDescriptorRegistration(TargetType = typeof (ContentReference), UIHint = "teaserblock")]
public class BlockReferenceEditorDescriptor: ContentReferenceEditorDescriptor<TeaserBlock> {
  public override IEnumerable<ContentReference> Roots {
    get {
      //Sample to override the default root for the repository.
      //Take the reference from configuration or site initialization and do not hard-code it.
      return new ContentReference[] {
        new ContentReference(90)
      };
    }
  }
}
```
