You must have a
Placeholder Settings item that has Renderings selected in the Allowed Controls field. The selected
Renderings must also be marked as
Placeholder Settings item must have the placeholder name in the
Placeholder Key field or assigned to the placeholder name in the Presentation on the
__Standard Values of the page template.
If you are using a Dynamic Placeholder implementation, make sure it has properly implemented it's own version of the
GetAllowedRenderings pipeline processor. This pipeline processor (found in the
GetPlaceholderRenderings portion of the pipeline) is responsible for building the list of Renderings to display when clicking the "Add to here" button in Experience Editor.
So, for instance, if we have a custom processor called
GetDynamicKeyAllowedRenderings , the processor code may look something like this:
public class GetDynamicKeyAllowedRenderings : GetAllowedRenderings
public new void Process(GetPlaceholderRenderingsArgs args)
Item placeholderSettingsItem = null
// Figure out if this is a dynamic placeholder
// and get the proper placeholder settings item from Sitecore.
List<Item> allowedRenderings = null;
if (placeholderSettingsItem != null)
args.HasPlaceholderSettings = true;
// Get the list of allowed renderings for this placeholder
allowedRenderings = GetRenderings(placeholderSettingsItem , out flag);
args.CustomData["allowedControlsSpecified"] = true;
// If GetRenderings returns a list of renderings to display, this must be set to false.
// If set to true, the Allowed Renderings pane will always show the tree view.
args.Options.ShowTree = false;
if (allowedRenderings == null) return;
if (args.PlaceholderRenderings == null)
args.PlaceholderRenderings = new List<Item>();
The key to the code above, is to set
args.Options.ShowTree = true if there are renderings to display. If this remains
false, it will always show the tree view (as seen in the screenshot in the question).