Posts

Custom Link Expansion in Sitecore: A Deep Dive into ExpandDynamicLinks in Link Provider

Hello everyone, This blog is continuation of my previous blog where we have seen how we can override the default link provider in XM Cloud. Now let's understand, how we can customize the behavior of links available withing Rich Text field. In Sitecore, managing links correctly is crucial—especially when dealing with Rich Text fields, emails, or content reuse across multiple sites. One of the key methods that helps with this is ExpandDynamicLinks, available in the LinkProvider class.Let’s explore what this method does, why it matters, and where you might use or override it in your Sitecore solution What is ExpandDynamicLinks? The ExpandDynamicLinks method is part of the Sitecore.Links.LinkProvider class. It's used to scan HTML or text content and replace Sitecore’s dynamic links (like ~/link.aspx?...) with friendly, human-readable URLs. Method Signature public virtual string ExpandDynamicLinks(string text, bool resolveSites); Parameters: text : A ...

Implementing Custom Link Provider in Sitecore XM Cloud

Image
Hello everyone, In this blog post we will see how we can override link provider class in Sitecore XM Cloud with a practical usecase. In Sitecore XM Cloud, the default link provider helps generate URLs based on the item's path and configured routing rules. However, in many real-world scenarios, marketers and content authors need more flexibility—like overriding the generated URL with a custom one defined at the content level. This blog walks through a custom link provider use case where a template includes a field such as "Override URL", allowing authors to specify a different link for a given page Let's walk through the scenario. Imagine you have a Search Page in Sitecore that includes an "Override URL" field. Now, create a sample content item—for example, a News Article page under a News folder. Whenever a component on this News Article page tries to generate a link to the main Search Page, we want to intercept this behavior. If the Search Page’s "O...

Moving Roles From Traditional XP To XM Cloud Using Sitecore Serialization

Hello everyone! In this blog post, we'll explore an essential concept in Sitecore — Sitecore Roles — which remains relevant across all platforms. Recently, I was working on a migration project where we needed to move Sitecore roles from a traditional XP solution to XM Cloud. Naturally, the first solution that came to mind was using Sitecore Serialization, as it's the go-to method for item migration. However, I quickly discovered that this approach doesn’t work as expected — roles cannot be serialized as IAR files. So, what now? After diving into the Sitecore documentation, I found the right approach — and I’m sharing it with you in this blog. Keep reading to find out how to successfully migrate roles to XM Cloud! The solution is that we need to module.json file which defined your roles only. The change will be that this should be deploy to your XM cloud instance as part of post deploy action mentioned in xmcloud.build.json file Step 1: Create a Foundation.Roles.module.jso...

Extend Page Props Factory in Sitecore XM Cloud to Inject Custom Data into the Layout Service

Image
Hello everyone! In this blog, we'll explore how to extend the page props factory plugin to add our own custom fields. We will take a realistic example to understand the concepts. XM Cloud is based on the SXA framework. In SXA, there was an option to add and manage the favicon directly from the CMS. However, this functionality is not available in XM Cloud. Instead, the favicon is typically placed in the public directory of your Next.js application to ensure public accessibility. If you want the favicon to be managed exclusively through the CMS, what approach can be taken to achieve this? So let's get started with CMS changes.First Step will be to add favIcon template with favIcon field. Second will be to add that template as base template for your main Settings item. Follow the below screenshot. Let's see the FE changes that we need to do. Create a new file called CustomContextResolver.ts under lib --> page-props-factory --> plugins Add the below code. Check...

Deploy and Test Local Feature Branches Like a Pro with Vercel CLI - XM Cloud and Vercel

Image
Hello everyone! In this blog, we'll explore how to use the Vercel CLI to deploy local branch changes to a Vercel Preview environment for quick verification and validation. Ideally, we have a proper CI/CD pipeline in place to build and deploy changes to the appropriate Vercel environment. However, there are situations—such as urgent bug fixes—where you might need to quickly validate your changes without waiting for the full pipeline. In such cases, you can use the Vercel CLI to deploy your local changes directly, typically to a Preview environment. Even if something goes wrong, Vercel makes it easy to roll back: you can simply redeploy a previous build from the dashboard and restore the environment within minutes Let's begin by setting up the Vercel CLI on your local machine. At this point, you should have already created a branch from your main or develop branch and pulled the latest commits. You've made your changes and tested them locally — now you're ready to deplo...

CI/CD Made Easy: Bitbucket to XM Cloud and Vercel

Image
In this blog, we’ll explore how to integrate a Bitbucket CI/CD pipeline with XM Cloud. Recently, we worked with a client who used Bitbucket to manage their repositories, and we discovered that integrating XM Cloud with Bitbucket isn’t as straightforward as it is with Azure DevOps. So, let’s walk through how you can achieve this integration using Bitbucket. We will divide this blog in 2 parts. Part 1: Creating project in XM Cloud Part 2: Setting Up the CI/CD pipeline Creating project in XM Cloud When working with Bitbucket, you can use the XM Cloud portal to create a project; however, you won’t be able to link it directly to Bitbucket due to the lack of native integration. To set this up, you can follow these steps: Create a repository in Bitbucket by using import repository options. Clone the repository to your local machine. Push the entire XM Cloud project codebase to Bitbucket. Use the Sitecore CLI deploy app command to deploy the code from your local environment ...

Create Custom Definition In Sitecore Content Hub And Display Using OOTB component

Image
In Sitecore Content Hub, definitions are blueprints that structure and classify content entities like assets, contracts, and products. They let you customize metadata, add relationships, properties, and constraints, and either extend built-in definitions (e.g., M.Asset, M.Collection, M.Content ) or create new ones based on project needs. This guide explains how to create new definitions and when they’re required We will see, how one can create its own custom definition in content hub according to business need with an example. Let’s walk through a real-world example of creating a new definition for Marketing Campaigns. In this use case, we will build a custom definition that allows your organization to track marketing campaigns with attributes like CampaignName, StartDate, EndDate, Location, MarketingAssets and CampaignStatusActive Step 1: Creating New Definition Log in to your Sitecore Content Hub instance, navigate to Manage, then search for Schema. Click on Schema, and you’ll se...