TYPO3 9.5.2 Slug: многоязычный: страница не найдена 404 исключение, если не существует перевода страницы

У меня есть веб-сайт с двумя языками, например, de и en. De - мой язык по умолчанию без префикса пути. En, второй язык, имеет /en/ в качестве префикса в URL. Теперь, когда я переключаюсь на язык en, ссылки на пункты меню имеют /en/ в URL, что нормально. Но когда я нажимаю на пункт меню, который явно не переведен в бэкэнд, я получаю ошибку 404. Я не могу сказать, что это неправильное поведение, потому что до того, как я его создаю, нет страницы с таким путем. Но что мне делать? Создайте перевод для каждой страницы, что бесполезно, если уже есть сотни страниц. Нет ли откатов (не откат контента, откат страницы)?

конфигурация сайта

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

3 ответа

Существует открытая ошибка, связанная с резервным содержимым:

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;

Это должен быть комментарий к ответу Штеффена Мехтеля, но у меня недостаточно репутации -.-.

Если вы хотите архивировать, чтобы все страницы были скрыты (внутри меню), когда нет перевода, вы можете установить глобальные настройки в разделе "Параметры модуля" -> "Настройка параметров для всей установки" -> [FE][hidePagesIfNotTranslatedByDefault] (

Другим обходным решением вместо создания переводов для каждой страницы является создание статических маршрутов. Например:

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

Не очень удобное решение, хотя. И у него есть недостаток, заключающийся в том, что маршрутизация на английские страницы изменит выбранный язык (в примере с немецкого на английский).

Эта проблема все еще не решена в TYPO3 9.5.4.

Другие вопросы по тегам