Sitecore 9.3 以降 LinkManagerのデフォルトのURL生成オプションの指定方法が変更されています

samatsu 4/5/2020 2073 N/A Sitecore XP

Sitecore 9.3 から、LinkManager.GetItemUrl メソッドを使用した際に生成するURLのデフォルトの生成オプションを指定する方法に変更が発生していますので、メモを記載します。

Sitecore 9.2までは、 Sitecore.config にある、 <LinkProvider .. > というノードの属性でURLの生成オプションを指定していました。

Sitecore 9.3では、LinkManagerクラスが内部的に使用している LinkProvider を拡張しやすくするために、リンクにデフォルトに生成オプションが他のノードに移動しています。

Build item and media URLs
https://doc.sitecore.com/developers/93/sitecore-experience-manager/en/build-item-and-media-urls.html

上記サイトに説明がありますが、 Sitecore.configに links > itemUrlBuilder というノードが追加されています。こちらの方で、オプションを指定します。Sitecore.configにはコメントでオプションに設定できる説明が実際には記載されています。

    <links>
        <urlBuilder>
            <alwaysIncludeServerUrl>false</alwaysIncludeServerUrl>
            <languageEmbedding>asNeeded</languageEmbedding>
            <languageLocation>filePath</languageLocation>
            <lowercaseUrls>false</lowercaseUrls>
            <encodeNames>true</encodeNames>
            <useDisplayName>false</useDisplayName>
        </urlBuilder>
        <itemUrlBuilder type="Sitecore.Links.UrlBuilders.ItemUrlBuilder, Sitecore.Kernel">
            <param desc="defaultOptions" type="Sitecore.Links.UrlBuilders.DefaultItemUrlBuilderOptions, Sitecore.Kernel">
                <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>

実際にはパッチファイルでオプションを変更するようにしてください。