无法在 URL 中禁用显示名称
Can't Disable Display Name in URL
我在 URL 中禁用了显示名称:
<linkManager defaultProvider="sitecore">
<providers>
<clear />
<add name="sitecore" type="Sitecore.Links.LinkProvider, Sitecore.Kernel" addAspxExtension="false" alwaysIncludeServerUrl="false" encodeNames="true" languageEmbedding="never" languageLocation="filePath" lowercaseUrls="false" shortenUrls="true" useDisplayName="false" />
</providers>
</linkManager>
但我仍然可以浏览到显示名称。我没有自定义 ItemResolver。我不明白为什么我可以通过显示名称浏览到这些页面。
负责url生成的是LinkProvider
。它与浏览到 url.
无关
要浏览 url,您需要编写自己的 ItemResolver
。
默认 Sitecore ItemResolver
class 有一种方法会尝试根据其显示名称解析项目,并且没有允许您立即禁用它的设置。
这是因为您只是将 Link 提供程序设置为在生成链接时不使用 Display Names
。
Sitecores Link 提供程序和项目解析器使用不同的代码。在项目解析器中,如果项目无法通过直接路径解析,它会调用此代码:
Item obj2 = this.ResolveUsingDisplayName(args);
因此它也将通过显示名称进行解析。
要更改它,您需要覆盖 ItemResovler
并删除该行代码。
我在 URL 中禁用了显示名称:
<linkManager defaultProvider="sitecore">
<providers>
<clear />
<add name="sitecore" type="Sitecore.Links.LinkProvider, Sitecore.Kernel" addAspxExtension="false" alwaysIncludeServerUrl="false" encodeNames="true" languageEmbedding="never" languageLocation="filePath" lowercaseUrls="false" shortenUrls="true" useDisplayName="false" />
</providers>
</linkManager>
但我仍然可以浏览到显示名称。我没有自定义 ItemResolver。我不明白为什么我可以通过显示名称浏览到这些页面。
负责url生成的是LinkProvider
。它与浏览到 url.
要浏览 url,您需要编写自己的 ItemResolver
。
默认 Sitecore ItemResolver
class 有一种方法会尝试根据其显示名称解析项目,并且没有允许您立即禁用它的设置。
这是因为您只是将 Link 提供程序设置为在生成链接时不使用 Display Names
。
Sitecores Link 提供程序和项目解析器使用不同的代码。在项目解析器中,如果项目无法通过直接路径解析,它会调用此代码:
Item obj2 = this.ResolveUsingDisplayName(args);
因此它也将通过显示名称进行解析。
要更改它,您需要覆盖 ItemResovler
并删除该行代码。