Sitecore Headless – Wildcard item with datasource content resolver

On one of my first Sitecore Headless project I got a requirement to implement a dynamic URL resolving to display product data from a different root of the Sitecore tree. If it would have been a traditional Sitecore solution I could implement a custom item resolver but in the headless world we need a different kind of mindset to solve problems like this.

Continue reading “Sitecore Headless – Wildcard item with datasource content resolver”

Update NuGet packages in multiple repositories

On my current project we are struggling of updating multiple repositories after we are pushing a new version of our custom NuGet packages. A solution could be to use floating versions but I wanted more control over the versions, because there could be cases where I need different versions on each solutions. Therefore I went in the direction to update the versions manually on a developer machine. This way, pull requests needs to be opened for each package updates, but this is great because I want all developers aware of the changes.

Continue reading “Update NuGet packages in multiple repositories”

Using Sitecore configuration API from Service Configurator

OR when you are facing with the following exception:

[LockRecursionException: A read lock may not be acquired with the write lock held in this mode.]
System.Threading.ReaderWriterLockSlim.TryEnterReadLockCore(TimeoutTracker timeout) +1347
System.Threading.ReaderWriterLockSlim.TryEnterReadLock(TimeoutTracker timeout) +44
Sitecore.DependencyInjection.ServiceLocator.get_ServiceProvider() +176
Sitecore.Configuration.<>c.<.cctor>b__360_0() +9
System.Lazy`1.CreateValue() +734
System.Lazy`1.LazyInitValue() +189
Sitecore.Configuration.Settings.GetSetting(String name) +48
Continue reading “Using Sitecore configuration API from Service Configurator”

Template dependent field validator WITHOUT Sitecore rules engine

A year ago I have posted about how to create template dependent field validator with rules engine. But it requires too many modifications, so I have decided to write this post about how to do the similar functionality without rules engine.

So at first I have implemented a base class which should be used by all validators which want to be dependent on a template or a base template. This class does the following steps:

  1. Checks the template ID and base template ID of the current item
  2. If it is true then the main part is called, this is the following line:
return evaluate();

This is the injected specific validation method which is passed as a parameter.

Continue reading “Template dependent field validator WITHOUT Sitecore rules engine”

WebEdit.AffectWorkflowForDatasourceItems – collect datasource children items

This feature appeared in Sitecore 8.2, which is changing the workflow state value for datasource items together with the context page item (only in Experience Editor). Here is a great summary article related to these improvements.

I was not fully satisfied with this because by default this only collects the datasource items and does not the children items of a datasource. This is an issue when you have something like a list component which shows the children items. What I have found is:

<command
name="webedit:workflowwithdatasourceitems" type="Sitecore.ExperienceEditor.WebEdit.Commands.WorkflowWithDatasourceItems, Sitecore.ExperienceEditor" />

Continue reading “WebEdit.AffectWorkflowForDatasourceItems – collect datasource children items”

Editor Extensions – Copy a page with its components

What Sitecore standard copy functionality does:

  1. Copies the whole item tree under the selected item
  2. Copies all item versions (if you have more)
  3. All references (included the datasources in your components) remain the same

So in some cases it is good but especially when you have pages with local component datasources the standard copy function does not really for you.

Continue reading “Editor Extensions – Copy a page with its components”

Sitecore iframe field type basics

A few days ago I implemented a custom field which should have 2 dropdowns which are depending on each other (here you can find the whole implementation, in this example I will just show you a simple text field).

So I checked all possible solutions and I decided to use the Iframe type for that. This is a default field provided by Sitecore. So in the source input on the template you need to provide the url for your iframe. In my case it will be a Controller:

Capture Continue reading “Sitecore iframe field type basics”