使用流暢的LocalMenu
模板來獲取語言切換器會給我顯示爲頁面的自定義控制器和數據對象的「錯誤」鏈接。SilverStripe Fluent - 如何防止在自定義控制器上查詢字符串?
所以我都有。控制器作爲頁面和其他自定義控制器上的數據對象顯示爲頁面。
而不是en/sompage/foobar
我收到somepage/foobar?l=en_US
我認爲這我的錯實現對這些數據對象和控制器的Link
功能造成的。
我該如何做到正確?我找不到任何關於此的信息。這是我當前的代碼:
public function Link($action = null) {
$parent = MyParentPage::get()->first()->URLSegment;
$home = RootURLController::get_default_homepage_link();
if($parent != $home) {
$url = $parent . '/';
} else {
$url = null;
}
return Director::baseURL() . $this->fluentUrlSegment() . $url . 'controller-segment';
}
和
public function fluentUrlSegment() {
if(class_exists('Fluent')) {
$locale = Fluent::current_locale();
$fluentConfig = Fluent::create()->config();
if($fluentConfig->default_locale != $locale) {
if($fluentConfig->aliases && isset($fluentConfig->aliases[$locale])) {
$locale = $fluentConfig->aliases[$locale];
}
$locale = $locale . '/';
} else {
$locale = '';
}
} else {
$locale = '';
}
return $locale;
}
流利配置
---
Name: projectfluentconfig
After: '#fluentconfig'
---
Fluent:
disable_default_prefix: true
detect_locale: true
remember_locale: true
default_locale: de_DE
locales:
- de_DE
- en_US
aliases:
de_DE: de
en_US: en
field_exclude:
---
Name: projectfluentconfig
After: '#fluenti18nconfig'
---
i18n:
default_locale: de_DE
更新
由於WMK的答案,我可以提高我的鏈接功能。不幸的是,它仍然沒有改變流利地區菜單中的鏈接。
代替geschichte/..
和en/geschichte/..
我收到了德國網站geschichte/..?l=de_DE
和geschichte/..?l=en_US
和en/geschichte/..?l=de_DE
和en/geschichte/..?l=en_US
在英國之一。
難道說流利就完全忽略了這些鏈接功能嗎?我還犯了一個錯誤還是錯過了一些東西?這裏是我的shortend代碼Controller,DataObject,Routes,Extensions & Fluent Config
有什麼建議?
更新2
在FluentSiteTree
類的LocaleLink
功能似乎是「問題」
英語是您的默認語言環境嗎?你可以分享你的配置嗎?有一個設置可以從德國的URL –
中刪除默認語言環境。我編輯了我的問題,並添加了配置 –
你有一個自定義控制器爲你的數據對象,或者它只是一個頁面的子鏈接? – wmk