【问题标题】:TYPO3 9.5.2 Slug: Multilanguage: Page not found 404 exception, if no translation of page existsTYPO3 9.5.2 Slug:多语言:找不到页面 404 异常,如果不存在页面翻译
【发布时间】:2019-05-14 18:33:44
【问题描述】:

我有一个网站,有两种语言,例如 de 和 en。 De 是我的默认语言,没有路径前缀。 En,第二种语言,在 url 中有 /en/ 作为前缀。现在,当我切换到 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


    【解决方案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;
    

    【讨论】:

    • 感谢您的解决方法,我会尝试的。好像9.5.3没有修复这个bug,希望下个版本能修复。
    【解决方案2】:

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

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

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

    TYPO3 9.5.4 中仍然没有解决这个问题。

    【讨论】:

      【解决方案3】:

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

      如果您希望在没有翻译时隐藏所有页面(在菜单内)的存档,您可以在 Module Settings -> Configure Installation-Wide Options -> [FE][hidePagesIfNotTranslatedByDefault] 下设置全局设置(

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-25
        • 2013-06-28
        • 1970-01-01
        • 1970-01-01
        • 2020-01-02
        相关资源
        最近更新 更多