流暢なテンプレートからLocalMenu
テンプレートを使用すると、私のカスタムコントローラーやデータオブジェクトに「間違った」リンクが表示され、ページとして表示されます。SilverStripe Fluent - カスタムコントローラーのクエリーストーンへのフォールバックを防ぐ方法を教えてください。
私は両方を持っています。ページとして表示される他のカスタムコントローラ上のページおよびデータオブジェクトとしてのコントローラ。
代わりのen/sompage/foobar
私は、私はそれは、これらのデータオブジェクトとコントローラ上のLink
機能の私の間違った実装に起因していると思いsomepage/foobar?l=en_US
を受けます。
どうすれば修正できますか?私はそれについて何も見つけることができません。私は私のリンク機能を改善することができ
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/..
私は英語1に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
機能は、すでにDBからページを取得し、URLSegmentを取る「問題」
英語はデフォルトのロケールですか?あなたの設定を共有できますか?デフォルトのロケールをURLから削除する設定があります。 –
ドイツ語です。私は自分の質問を編集し、設定を追加しました –
あなたはあなたのデータオブジェクト用のカスタムコントローラを持っているのですか、それとも単にページのサブリンクですか? – wmk