HomeDev GuideRecipesAPI Reference
Dev GuideAPI ReferenceUser GuideGitHubNuGetDev CommunityOptimizely AcademySubmit a ticketLog In
Dev Guide

Select content

Shows ways to set up content selector properties to create links to other content, such as selecting a page in a page reference property.

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.

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.

[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)
      };
    }
  }
}