Im trying to implement a custom Url Builder with Sitecore 9.3.I can't seem to figure out how to patch it. I made a custom url builder that implements BaseUrlBuilder but when I try to patch it in I get:
Unable to cast object of type 'Transform.Foundation.ItemResolution.CustomItemUrlBuilder' to type 'Sitecore.Links.UrlBuilders.ItemUrlBuilder'.
Here is the current state of my patch file:
<?xml version="1.0"?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<links>
<itemUrlBuilder type="MySolution.Foundation.ItemResolution.CustomItemUrlBuilder,MySolution" patch:instead="*[@type='Sitecore.Links.UrlBuilders.ItemUrlBuilder, Sitecore.Kernel']">
<param type="Sitecore.Links.UrlBuilders.DefaultItemUrlBuilderOptions, Sitecore.Kernel" desc="defaultOptions">
<alwaysIncludeServerUrl ref="links/urlBuilder/alwaysIncludeServerUrl"/>
<languageEmbedding ref="links/urlBuilder/languageEmbedding"/>
<languageLocation ref="links/urlBuilder/languageLocation"/>
<lowercaseUrls ref="links/urlBuilder/lowercaseUrls"/>
<encodeNames ref="links/urlBuilder/encodeNames"/>
<useDisplayName ref="links/urlBuilder/useDisplayName"/>
<addAspxExtension>false</addAspxExtension>
<siteResolving>true</siteResolving>
<shortenUrls>true</shortenUrls>
</param>
</itemUrlBuilder>
</links>
</sitecore>
Sitecore.Links.UrlBuilders.ItemUrlBuilder
and override theBuild(item, options)
method. BaseUrlBuilder doesn't appear to be registered in Services Config so this still does not appear to be using the IOC container.BuildUrl()
would be probably a better method to override just for the custom link generation part.