2011-10-12 46 views
0

我在sitecore中創建了多種語言的站點......我內容編輯器(系統>語言)我已經指定了三種語言(荷蘭語,英語和德語)。不,我有2個問題。Sitecore國家國際標準化組織在URL中

當一個項目有,例如:一個英文版本,但沒有德語和荷蘭語版本,我輸入的地址德國網站:www.testsite.com/de我得到的德國網站,但沒有內容。在這種情況下,我想要顯示一個404頁面。

另一個問題是,當我使用系統>語言中未指定的語言時,該項目仍然會獲得空白網站。在這種情況下,我也想要顯示一個404頁面。只要它是有效的ISO代碼,Sitecore就會顯示該頁面。

我使用Sitecore的6.4

有誰對這些問題(S)的解決方案?

在此先感謝!

mrtentje

我的LinkManager被指定爲在Web.config如下:

<add name="sitecore" type="Sitecore.Links.LinkProvider, Sitecore.Kernel" addAspxExtension="true" alwaysIncludeServerUrl="false" encodeNames="true" languageEmbedding="asNeeded" languageLocation="filePath" shortenUrls="true" useDisplayName="false"/> 

回答

0

不幸的是,你必須在Sitecore的手動管理這兩種方案,它們都具有相當簡單的解決方案,但需要你的一些發展。

對於第一個(訪問沒有翻譯的頁面),我認爲您需要在Sitecore中擴展當前的ItemResolver,並明確檢查是否存在已選擇語言的版本。我自己沒有實現,但這就是我處理它的方式。

第二個(只接受某些語言)是我處理的東西,它真的讓我困擾,Sitecore本身無法處理它(儘管它可能並且我錯過了它)。爲此,我在LanguageResolver調用PermissableLanguageChecker之後立即在管道中創建了一個步驟。這將檢查請求的當前語言是否爲某個允許值中的某一個,如果不是,則會將語言設置恢復爲默認語言,或者在您的情況下拋出404.

對於「允許值」,我從網站上配置了新的屬性有閱讀:

<site name="website" ... permissableLanguages="pl-PL,en" language="pl-PL" ... /> 

這permissableLanguages屬性是方便,因爲我們還可以提出一個語言選擇控制權交給用戶使用它時,後來在現場。