TYPO3 9.5.2 Slug:多语言:如果没有页面翻译,则找不到页面404异常

问题描述 投票:2回答:3

我有一个有两种语言的网站,例如de和en。 De是我的默认语言,没有路径前缀。 En,第二种语言,在URL中具有/ en / as前缀。现在,当我切换到en语言时,菜单项链接在URL中有/ en /,这很好。但是当我点击一个未在后端显式翻译的菜单项时,我收到404错误。我不能说这种行为是错误的,因为在我创建之前没有一个带有这个slug路径的页面。但是我该怎么办?如果已有数百页,则为每个页面创建翻译,这是没有用的。是否没有回退(不是内容回退,页面回退)?

网站配置

rootPageId: 2
base: 'http://some-domain.de/'
baseVariants: {  }
languages:
  -
    title: 'Meine tolle Webseite'
    enabled: true
    languageId: '0'
    base: /
    typo3Language: de
    locale: de_DE.UTF-8
    iso-639-1: de
    navigationTitle: ''
    hreflang: ''
    direction: ''
    flag: de
  -
    title: 'Andere Sprache'
    enabled: true
    languageId: '1'
    base: /en/
    typo3Language: en
    locale: en_US.UTF-8
    iso-639-1: en
    navigationTitle: ''
    hreflang: ''
    direction: ''
    fallbackType: fallback
    fallbacks: '0'
    flag: en
errorHandling: {  }
routes: {  }
routeEnhancers:
  PageTypeSuffix:
    type: PageType
    default: .html
    map:
      .html: 0
content-management-system typo3 typoscript slug typo3-9.x
3个回答
1
投票

有一个与内容回退有关的漏洞:

https://forge.typo3.org/issues/86762

也许尝试升级到9.5.3(不知道这是否已修复)。

解决方法:您是否要删除英文菜单中未翻译的页面?

然后,您可以为所有页​​面设置“如果不存在当前语言的翻译,则隐藏页面”。此复选框可用于“语言”选项卡下的每个页面。

要对所有现有页面执行此操作:

UPDATE pages SET l18n_cfg = 2

要为新创建的页面自动设置此标志:在扩展中创建覆盖pages.php。

typo3conf/ext/[YOUR_EXTENSION]/Configuration/TCA/Overrides/pages.php

并添加l18n_cfg的默认值

$GLOBALS['TCA']['pages']['columns']['l18n_cfg']['config']['default'] = 2;

-1
投票

另一种解决方法是创建静态路由,而不是为每个页面创建翻译。例如:

route: de/english-slug-of-page
type: uri
source: https://yoursite/english-slug-of-page. 

虽然不是很方便的解决方案。它的缺点是,路由到英文页面会改变所选语言(例如从德语到英语)。

在TYPO3 9.5.4中仍然无法解决此问题。


-1
投票

这里应该是对SteffenMächtel答案的评论,但我没有足够的声誉 - .-。

如果您想要在没有翻译时隐藏所有页面(内部菜单)的存档,您可以在模块设置 - >配置安装范围选项 - > [FE] [hidePagesIfNotTranslatedByDefault]下设置全局设置(<TYPO3 9,您将获得安装工具中的相同设置)。这种方式有点简单:)

© www.soinside.com 2019 - 2024. All rights reserved.