2016-08-19 52 views
1

我禁用了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。我無法弄清楚爲什麼我可以通過顯示名稱瀏覽這些頁面。

+0

它是否生成帶有顯示名稱的URL,或只有直接輸入顯示名稱URL才能瀏覽到顯示名稱URL? – jammykam

+0

如果我瀏覽它。鏈接管理器不會生成顯示名稱url。 –

回答

1

這是LinkProvider這是負責網址生成。它與瀏覽網址無關。

要瀏覽網址,您需要編寫自己的ItemResolver

默認Sitecore ItemResolver類有一種方法,試圖根據其顯示名稱來解析項目,並且沒有設置允許您將其禁用開箱即用。

0

這是因爲您只是在生成鏈接時將鏈接提供程序設置爲不使用Display Names

Sitecores鏈接提供程序和項目解析程序使用不同的代碼。在項目解析,如果該項目不能直接路徑來解決它調用此代碼:

Item obj2 = this.ResolveUsingDisplayName(args); 

所以它也將被顯示名稱解析。

要改變這種情況,您需要覆蓋ItemResovler並刪除該行代碼。