Skip to main content

Add contextual code to an item in Sitecore

One of the most useful customization of Sitecore is the ability to add contextual code to an item in Sitecore. For example let say we have a page in Sitecore that works well in the English language. A content author wants to create the same page in french. Unfortunately there isn't an out of the box way to copy the English page content (including all child items) into french.  This is where adding contextual code will help. 

To do this you would have to install Sitecore powershell extensions. There are lots of documentations online about this tool. 

To add contextual code to an item in Sitecore, you would need to add a new module to the powershell script library located at
/sitecore/system/Modules/PowerShell/Script Library/

Under this module you can add any powershell scripts you want under the context menu node. 
Make sure to enable the module and you should see these script under any item. You can even modify the rule section to determine which items you want to allow these scripts to be available to. The below code is an example script of creating a fr-CA version of the current item and children. 




You can add pretty much anything here, but I would caution to think about what ways this could get abused. For example in the above code I added a limit of 20 children that this script would work for. This is so that a content author does not inadvertently use this on a home node and cause the entire site to get updated. Hope this is useful to someone else. But please use with caution. 

Comments

Popular posts from this blog

Back-End and Front-End Development in Sitecore XM Cloud

  Understanding the Roles In Sitecore XM Cloud, back-end developers primarily manage content models, custom APIs, and data within the Sitecore CMS backend. On the other hand, front-end developers focus on building the user interface and interactions using a JavaScript framework like React, consuming content from the backend via GraphQL endpoints. The headless CMS architecture of Sitecore XM Cloud allows the front-end to be largely decoupled from the back-end, providing flexibility in technology choices and development workflows. Back-End Developer Responsibilities Back-end developers in Sitecore XM Cloud are responsible for: Deployment of all custom components to XM Cloud. Synchronizing components, code, and content between Prod and Non-Prod environments. Answering questions from content authors regarding component usage, troubleshooting site load, caching, and component versions. Troubleshooting Edge CDN issues related to content updates. Designing and managing content structures,...

Create Object XML while Debugging in VS

 There are times when you put breakpoints in Visual studio and read object values within Visual Studio. This is all good if you are doing some debugging. But if you want to save an object like a Json object in Visual studio there isn't a straightforward way to do that. I found this piece of code that I copied and pasted in the Immediate Window in Visual Studio and was able to save the object as an XML file. (new System.Xml.Serialization.XmlSerializer(YourObject.GetType())).Serialize(new System.IO.StreamWriter(@"c:\tmp\YourObject.xml"), YourObject) Happy Sitecoreing!

Adding Entra ID Auth to a Blazor App

I wanted to take the time to write up this article since I found it useful when working on Blazor Apps. Althought this is not Sitecore related, I think it will be useful if we need to build an admin .NET portal. Additionally most organizations already have Entra ID if they use Microsoft apps and building Entra ID Authentication wont add costs like other Authentication methods would. To get started make sure the following packages are available (using NuGet) in your solution. Microsoft.Identity.Web Microsoft.Identity.Web.UI Azure.Security In your Program.cs file, add the following using Microsoft.AspNetCore.Authentication.OpenIdConnect; using Microsoft.Identity.Web; using Microsoft.Identity.Web.UI; // Add Microsoft Entra ID authentication builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureAd")); builder.Services.AddAuthorization(options => { options.FallbackPo...