14

Ensure that the component (either the sublayout, view rendering item or the controller rendering item) has it's "editable" checkbox checked.


11

The key for a dynamic placeholder uses the parent unique rendering Id to become dynamic, it also appends an incremental number in case you want multiple placeholders. In your example: <!-- Right Content --> <div class="col-sm-4"> @Html.Sitecore().DynamicPlaceholder("ContentSectionRight") </div> So you have created a placeholder key of ...


10

Simplified, this is how you can think of Sitecore placeholders and how Sitecore uses them to build up your page. Sitecore Presentation Details, regular placeholders For any page, Sitecore maintains a "map" of "presentation details". Simplified, this is just a map of placeholder and component. So something like this main (placeholder) ...


10

You can try to open the standard values item with the Experience Editor and add the renderings you like. If that doesn't work out, create an item based on the template, add the renderings and manually copy the values over to the standard values item.


9

This is the script I've used in the past: # specify your path here. It is most likely be page templates and page content $startPath = "/sitecore/content" Get-ChildItem -Path $startPath -Recurse | ForEach-Object { $item = $_; Get-Rendering -Item $_ | ForEach-Object { $rendering = $_; $matches = [regex]::Matches($_.Placeholder,'(...


8

It sounds like you have added the component to a placeholder key called section - with dynamic placeholders there will be an extra bit of data appended to that. Depending on the version of dynamic placeholders you have installed, that data changes. If you have installed the Fortis Dynamic Placeholders - this appends the guid of the unique rendering Id to ...


7

Here is a modified version of @vzaverugo's script to account for when you have multiple placeholders with the same name in a single rendering. Fortis will append an incremental seed suffix. Sitecore 9 also has a concept of an incremental seed suffix. This modified script can account for that, as long as you setup your Sitecore 9 seeds to match the same ...


7

Placeholder Settings are used if you want to restrict someone to add renderings on a specific part of a page on Experience Editor. For example, let's say your page layout homepage is divided into 3 sections: Header - with placeholder name Above Page Content Page Content -with placeholder name Page Content Footer - with placeholder name Below Page Content ...


6

What is static- and dynamic bindings in general? Static binding means adding a rendering to a page in a raw way, e.g. in an mvc view: @Html().RenderAction("Controller", "Action"); Essentially, it means that you are not able to change this without editing the code. Dynamic binding means that on a page you will have a placeholder to put ...


6

Updated OK - so this is a lot more complex than I thought it might be. Basically, because of the way that Sitecore handles renderings and placeholders, there is no way of getting all the placeholder keys for a page. You can only list placeholder keys where rendering has been added to it. Finding Rendering inside Dynamic Placeholders You can easily find ...


5

After some debugging by overriding the pipeline with my own I figured out this was due to an empty _renderings field. The _finalrenderings field was populated but the _renderings field wasn't and the Dynamic Placeholders save pipeline expects it to be. This was due to a miss-configuration on the standard values of the template for the page. Updating this ...


5

The behaviour you're seeing is because, by default, an incremental integer is used to differentiate the same placeholder name/rendering ID. The current version of Fortis Dynamic Placeholders allows you to override the default behaviour of the key generation (incremental integer). You can instead pass in your own unique key to differentiate the placeholder ...


5

It's not really an answer to your direct question, but it's a solution. I am using Fortis dynamic placeholder for MVC right now. Works out of the box. Zero problems with nesting. Site: http://fortis.ws/fortis-collection/dynamic-placeholders/ NuGet: https://www.nuget.org/packages/DynamicPlaceholders.Mvc/ <div class="container-fluid"> <div ...


5

It is possible to use the Fortis Dyanmic Placeholders in Web Forms however you'll need to create your own method of generating the placeholder ID. The MVC implementation is as follows: public static HtmlString DynamicPlaceholder(this SitecoreHelper helper, string placeholderName) { var placeholder = PlaceholdersContext.Add(placeholderName, ...


3

By default Sitecore 9 generate dynamic placeholder key in this format {placeholder key}-{rendering unique suffix}-{unique suffix within rendering} richtext-{3F6606D1-BA9C-40DD-8D17-704D0396683D}-10 placeholder key The static placeholder key is passed in. rendering unique suffix The Unique Rendering ID of the component that contains the placeholder. This ...


3

So, after wrestling with this for awhile, I finally figured out what the problem was. It seems I had forgotten to assign a placeholder setting to the dynamic placeholder, which then caused rendering issues since the Experience Editor couldn't tell the difference between the dynamic placeholders. The reason it displayed correctly when the placeholders were ...


3

Mark Cassidy's response explains the why best. However just to summarize, without Dynamic Placeholders, if you are trying to build a truly reusable website, where you reuse components as much as possible, you will run into issues if you do not use Dynamic Placeholders. So I would recommend that dynamic placeholders should be at the core of any Sitecore ...


3

If all of your dynamic placeholder keys contains the rendering UID then it should be possible. Let's expect that your placeholder keys look like this: /main/wrapper_0b720b64f1a648dd9774cdc1484e7152 The Guid is the UID of the Wrapper rendering item. In this case the following method could work: private bool IsRenderingShown(RenderingReference rendering, ...


3

This is an alternative to the method mentioned by Thomas D. The Fortis solution uses the UID for the rendering attached to the placeholder key that you enter. You can get this by changing to Raw Values view and copying the xml out of the renderings or final renderings field. Find the rendering that contains your placeholder. There will be an xml element ...


3

From the error message, it sounds like the DLL for the Dynamic Placeholder isn't a known reference for your views. You'll want to add the following line to your /Views/Web.config file in your view folder: <add namespace="SitecoreExperienced.SitecoreControls" /> To should look something like: <system.web.webPages.razor> <host factoryType="...


3

Placeholder settings are used for Experience Editor. For a non technical guy which doesn't know very well your solution is almost impossible to know on which placeholder should add every component of your site. Sitecore is used this years for enterprise solution. For example if you have more than 50 components per site,10 sites is very difficult to know ...


3

I have previously created a similar implementation, though taking a slightly different approach, based on the renderings of the current item, rather than the available placeholder contexts. private static int GetId(string placeHolderName) { // Get all renderings from current item IEnumerable<RenderingReference> renderings = ContextItem....


3

1) For the col-wide-2, make sure the Editable checkbox is checked on the placeholder settings. 2) Have you perhaps added the 2-column-6-6 on the standard values of your template and then added it again through the page editor?


2

This was just because caching had been mistakenly added to the Sublayouts that use dynamic placeholders. Edit (further explanation): We have a set of sublayouts/renderings that are used for page structure, and just contain (dynamic) placeholders - i.e. "one column row", "two column row" etc. They are just used to add actual components into. Adding caching ...


2

At run-time, yes. Sort of. But if you're considering a programmatic loop, there are various reasons why this would be very difficult to achieve. Thing is: Sitecore doesn't know which placeholders will be emitted on any given Layout/Page. These placeholders are emitted by the components on the page at the time they are rendered, and Sitecore then loops ...


2

No, the OOTB Dynamic Placeholders in Sitecore 9+ does not support Webforms. The implementation is in the Sitecore.Mvc namespace, a.k.a. this is an MVC-only implementation. If you need to support Webforms then you would need to fallback to rolling your own or using one of the community implementations (such as Fortis Dynamic Placeholders), but you may need to ...


1

It doesn't look like you can access the placeholder in the getRenderingDatasource pipeline unfortunately. There is an potential solution posted for this here from Ruud van Falier though: https://stackoverflow.com/questions/26225480/sitecore-dynamic-data-source-locations?rq=1 Create a processor for the getPlaceholderRenderings. The ...


1

The article you've mentioned is for platform Dynamic Placeholders. SXA is not using them, we have our own version. Try creating placeholder settings item with the following key: section-content-* (or section-content*). The * is to make a placeholder dynamic and guarantee a uniqueness to the placeholder key across different renderings.


1

This was acknowledged as a bug - reference 338019 I ended up create an extension to resolve a $breadcrumb token along the lines of: public class ResolveBreadcrumb : ResolveVariantTokensProcessor { public override string Token => "$breadcrumb"; private const string BREADCRUMB_SEPARATOR = "<span class=\"breadcrumb-chevron\">></...


1

Rendering parameters are stored as name-value-collection (like a query string) with just the raw value - which for a multi-list field is a pipe-separated list of IDs. You could change your GetParameter() method to something like the following, to get a list of items: public IList<Item> GetParameter(DynamicPlaceholderRenderContext context, string ...


Only top voted, non community-wiki answers of a minimum length are eligible