14

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


13

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) ...


12

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,'(...


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

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.


8

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 ...


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 ...


8

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 ...


8

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

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, ...


5

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

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

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?


3

Workaround This is a bug in the Experience Editor. You can work around this issue by changing the rendering in Presentation Details with the Change button. Root Cause When you replace a rendering with a compatible rendering in the Experience Editor, a new unique ID is generated for the rendering. As Chris Auer mentioned, Sitecore's implementation of Dynamic ...


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

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 ...


2

You have to add the IsRenderingsWithDynamicPlaceholders: true in Controller or View Renderings.


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 ...


2

It would be difficult to update placeholder text in the input field because whenever you will update placeholder text, the cursor will show in the input field. There could be one way where you can add Edit Frame in between input fields like below: @using (BeginEditFrame(Model.Page, "Edit PlaceholderText", x => x.PlaceholderText)) { <input ...


2

This issue is not related to the upgrade directly, though it might be classified as a side effect. There is no any "main" placeholder in the provided Layout: @Html.Sitecore().Placeholder("main") The easiest way is to add the "main" placeholder definition just below the "main-content" one to your Layout.


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